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