Приватность при наследовании в Java
Модификатор private скрывает член только внутри объявившего
класса. Потомок не видит приватное поле родителя - обращение
this.title в Article к полю Post
вызывает ошибку компиляции:
class Post {
private String title = "";
public void setTitle(String title) {
this.title = title;
}
public String getTitle() {
return this.title;
}
}
class Article extends Post {
@Override
public void setTitle(String title) {
if (!title.isEmpty()) {
this.title = title; // error
}
}
}
Приватный метод родителя тоже недоступен в потомке:
class Post {
private boolean notEmpty(String value) {
return !value.isEmpty();
}
}
class Article extends Post {
public boolean check(String value) {
return notEmpty(value); // error
}
}
Публичные методы родителя по-прежнему можно вызывать у объекта
потомка. Ограничение касается прямого доступа к private.
Попробуйте в классе Employee
воспользоваться приватным полем
родителя напрямую.