Ответ
Нет, не имеет. Приватные (private) члены класса (поля, методы, конструкторы) видны и доступны только внутри самого класса, в котором они объявлены. Наследование не предоставляет доступа к приватным членам родителя.
Пример:
public class Parent {
private String secret = "Parent's secret";
protected String familyData = "Shared data";
}
public class Child extends Parent {
void tryAccess() {
// System.out.println(secret); // ОШИБКА КОМПИЛЯЦИИ: secret has private access in Parent
System.out.println(familyData); // OK: доступ к protected-полю
}
}
Как получить доступ к данным родителя?
- Использовать модификатор
protected: Поля и методы с этим модификатором доступны наследникам и классам в том же пакете. - Предоставить публичные или protected методы-геттеры/сеттеры в родительском классе.
- Использовать модификатор доступа по умолчанию (package-private), если наследник находится в том же пакете.
Это фундаментальный принцип инкапсуляции в ООП: внутреннее состояние объекта должно быть скрыто от внешнего мира, включая его подклассы, если явно не разрешено иначе.