Почему я могу получить доступ к своим личным переменным "другого" объекта напрямую, по методу "равный" (Object o)
В Java в методе equals (Object o) я могу получить доступ к приватным переменным переданного объекта без прохождения его публичных геттеров.
public boolean equals(Object o){
...
MyObject other = (MyObject)o;
return getProp() == other.prop;
}
Как это?
Ответы
Ответ 1
Личные данные доступны экземпляру any этого класса, даже если один экземпляр класса A обращается к частным членам другого экземпляра A. Важно помнить, что эти модификаторы доступа (private, защищенные, общедоступные) контролируют доступ class, а не экземпляр.
Ответ 2
Вероятный ответ заключается в том, что разработчик модели видимости считает, что любой разработчик, работающий в классе, должен осваивать реализацию всего класса.
Но это плохая идея. Это способствует плохой практике. Разработчик, получающий доступ к полю Person
, в классе Person
, не должен знать реализацию всего класса. Хорошей практикой является использование аксессора, не зная, какие операции выполняет аксессор.