Итак, я делал класс на днях и использовал метод Eclipse для создания метода equals, когда понял, что он создал следующий рабочий код:
class Test {
private int privateInt;
[...]
public boolean equals(Object obj) {
[...]
Test t = (Test) obj;
if ( t.privateInt == privateInt ) {
[...]
}
}
t.privateInt..???? Предположим, что это личное! Поэтому я предполагаю, что есть еще одна видимость поля, отличная от частной, защищенной, защищенной от пакетов и общедоступной.
Итак, что здесь происходит? Как это называется? Где кто-нибудь будет использовать это? Разве это не разрушает инкапсуляцию? Что, если класс не имел мутатора, и я это изменил? Это происходит и с С++? Это идиома OO? Если нет, то почему Java это сделала?
Как правило, где я могу найти информацию об этом?
Спасибо.