Вопрос по книге Хорстманна

читаю Хорстманна, 1-й том. Глава 5.1.10 Защищенный доступ.

Далее текст из книги (класс Manager extends Employee):

Как известно, поля в классе желательно объявлять как private, а некоторые методы — как public. Любые закрытые (т.е. private ) компоненты программы невидимы из других классов. Это утверждение справедливо и для подклассов: у подкласса отсутствует доступ к закрытым полям суперкласса.

Но иногда приходится ограничивать доступ к некоторому методу и открывать его лишь для подклассов. Реже возникает потребность предоставлять методам из подкласса доступ к полям в суперклассе. В таком случае компонент класса объявляется защищенным с помощью модификатора доступа, обозначаемого ключевым словом protected.

Так, если поле hireDay объявлено в суперклассе Employee защищенным, а не закрытым, методы из подкласса Manager смогут обращаться к нему непосредственно. Но методам из класса manager доступны лишь поля hireday, принадлежащие объектам самого класса manager, но не класса employee. Это ограничение введено в качестве предупредительной меры против злоупотреблений механизмом защищенного доступа, не позволяющим создавать подклассы лишь для того, чтобы получить доступ к защищенным полям.

Т.е. они хотят сказать, что я не смогу написать в классе Manager метод, который будет принимать в качестве явного аргумента некоторый объект класса Employee и в этом методе я не смогу получить значение hireDay этого объекта Employee?

Ну вот я написал код, где я вполне получаю значение этого поля... Помогите пожалуйста понять, что они хотели сказать?

public class Test {
public static void main(String[] args) {
  Employee emp = new Employee(5);
  Manager mng = new Manager(6);
  int number = mng.method_1(emp);
  System.out.println(number);
 }
}

class Employee {
protected int hireDay;

public Employee(int hireDay) {
 this.hireDay = hireDay;
}

public int getHireDay() {
  return this.hireDay;
 }
}

class Manager extends Employee {
public Manager(int hireDay) {
super(hireDay);
}

Ответы (0 шт):