Подтвердить что ты не робот

Почему я могу получить доступ к своим личным переменным "другого" объекта напрямую, по методу "равный" (Object o)

В Java в методе equals (Object o) я могу получить доступ к приватным переменным переданного объекта без прохождения его публичных геттеров.

public boolean equals(Object o){
    ...
    MyObject other = (MyObject)o;
    return getProp() == other.prop; 
}

Как это?

4b9b3361

Ответ 1

Личные данные доступны экземпляру any этого класса, даже если один экземпляр класса A обращается к частным членам другого экземпляра A. Важно помнить, что эти модификаторы доступа (private, защищенные, общедоступные) контролируют доступ class, а не экземпляр.

Ответ 2

Вероятный ответ заключается в том, что разработчик модели видимости считает, что любой разработчик, работающий в классе, должен осваивать реализацию всего класса.

Но это плохая идея. Это способствует плохой практике. Разработчик, получающий доступ к полю Person, в классе Person, не должен знать реализацию всего класса. Хорошей практикой является использование аксессора, не зная, какие операции выполняет аксессор.