Модификаторы доступа и не-доступа для типов Java

Модификаторы доступа и не-доступа для типов Java

public – доступ к свойству/методу из любой части программы.
private - доступ к свойству/методу только внутри того класса, в котором он объявлен.
protected - доступ к свойству/методу внутри того класса, в котором он объявлен, а также из классов-наследников, независимо от того, в каком пакете они находятся.
default - доступ к свойству/методу внутри того класса, в котором он объявлен, а также из классов и классов-наследников того же пакета.

default – это область вызова, а не модификатор доступа. Т.о. областей видимости четыре, а модификаторов три.

Все классы, интерфейсы и enum верхнего уровня (не вложенные в другие типы) могут иметь область видимости только public или пакетную (default). Внешний класс не может быть private или protected, это приводит к ошибке компиляции. Вложенные и внутренние типы могут иметь любой модификатор доступа.


public class Outer {
    private static class InnerOne {}   
    protected class InnerTwo {}
    private interface InnerInterface {}
}
Интерфейсы верхнего уровня могут объявляться только с двумя модификаторами (не-доступа): abstract и strictfp.
⚹Модификатор strictfp гарантирует, что результаты вычислений с плавающей точкой будут одинаковыми на всех платформах.
Основы Java