Ответ
Модификаторы доступа в Java, от самого строгого к самому открытому:
private— видимость только в пределах объявляющего класса.default(package-private) — видимость в пределах текущего пакета. Указывается отсутствием любого модификатора.protected— видимость в пределах текущего пакета + для классов-наследников, даже если они находятся в других пакетах.public— видимость отовсюду.
Пример и область видимости:
package com.example;
public class AccessExample {
private String secret = "only here"; // Только внутри AccessExample
String packagePrivate = "same package"; // Для всех классов в com.example
protected String forSubclasses = "package + kids"; // com.example + наследники
public String openToWorld = "everywhere"; // Отовсюду
}
package com.other;
import com.example.AccessExample;
class OtherPackageClass {
void test() {
AccessExample obj = new AccessExample();
// obj.secret; // Ошибка компиляции: private
// obj.packagePrivate; // Ошибка: default (разные пакеты)
// obj.forSubclasses; // Ошибка: не наследник и другой пакет
System.out.println(obj.openToWorld); // OK: public
}
}