Какой модификатор доступа в Java позволяет наследнику получить доступ к полю родительского класса?

«Какой модификатор доступа в Java позволяет наследнику получить доступ к полю родительского класса?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

protected — модификатор, который разрешает доступ к члену класса (полю или методу) из:

  1. Того же пакета.
  2. Любого класса-наследника, даже если он находится в другом пакете.

Пример:

class Parent {
    protected int protectedValue = 42;
    private int privateValue = 100; // Недоступен наследнику
}

class Child extends Parent {
    void printValues() {
        System.out.println(protectedValue); // Доступ разрешен
        // System.out.println(privateValue); // Ошибка компиляции: private
    }
}

Сравнение с другими модификаторами:

  • private — доступ только внутри объявляющего класса.
  • default (package-private) — доступ только внутри того же пакета.
  • public — доступ отовсюду.