Dlaczego mogę uzyskać dostęp do moich prywatnych zmiennych obiektu "other" bezpośrednio, w metodzie my equals (Object o)
W Javie w metodzie equals (Object o) mogę uzyskać dostęp do prywatnych zmiennych przekazywanego obiektu bez przechodzenia przez jego publiczne gettery.
public boolean equals(Object o){
...
MyObject other = (MyObject)o;
return getProp() == other.prop;
}
Jak to? 2 answers
Prywatne dane są dostępne przez dowolną instancję tej klasy, nawet jeśli jedna instancja klasy A ma dostęp do prywatnych członków innej instancji A. ważne jest, aby pamiętać, że modyfikatory dostępu (prywatne, chronione, publiczne) kontrolują dostęp do klasy , a nie dostęp do instancji .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-17 05:28:02
Prawdopodobna odpowiedź jest taka, że projektant modelu widzialności uważa, że każdy programista pracujący w klasie musi opanować implementację całej klasy.
Ale to jest zły pomysł . To zachęca do złych praktyk. Programista uzyskujący dostęp do pola Person
, w klasie Person
, nie musi znać implementacji całej klasy. Dobrą praktyką jest korzystanie z accessora, bez konieczności wiedzieć, jakie operacje accessor wykonuje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-21 09:44:36