Так что я делать класс другой день и использовал метод в Eclipse создать метод Equals, когда я понял, что он был создан следующий рабочий код:Java Private поле Видимость
class Test {
private int privateInt;
[...]
public boolean equals(Object obj) {
[...]
Test t = (Test) obj;
if (t.privateInt == privateInt) {
[...]
}
}
t.privateInt .. ???? Предположим, что это личное! Поэтому я думаю, что есть еще одна видимость на поле, кроме частной, защищенной, защищенной от пакетов и публичной.
Так что же здесь происходит? Как это называется? Где кто-нибудь будет использовать это? Разве это не разрушает инкапсуляцию? Что, если класс не имел мутатора, и я это изменил? Это происходит и с C++? Это идиома OO? Если нет, то почему Java это сделала?
Как я могу найти информацию об этом?
спасибо.
ОК ... Я понимаю сейчас ... Но ПОЧЕМУ? Почему Java допустила это? Можете ли вы придумать примеры реальной жизни. Я понимаю, почему он должен работать на равных. Но должен быть лучший пример. – pek 2008-11-26 15:20:04
Единственные другие примеры были бы похожи на равные, где вам дается другой экземпляр вашего класса в качестве аргумента. Что касается того, почему Java это сделал, он довольно стандартный в языках OO - C++ работает одинаково. Перегрузка == в C++: http://artis.imag.fr/~Xavier.Decoret/resources/C++/operator==.html – 2008-11-26 16:37:10