Пример кода (Java):
public class MutableInteger {
private int value;
// Lots of stuff goes here
public boolean equals(Object o) {
if(!(o instanceof MutableInteger)){ return false; }
MutableInteger other = (MutableInteger) o;
return this.value == other.value; // <------------
}
}
Если предположение «частные переменные-члены являются частными к примеру» были правильными, отмеченные линии вызовет ошибку компиляции, потому что other.value
поле является частной и частью другого объекта, чем тот, который вызывается методом equals()
.
Но поскольку на Java (и большинство других языков, имеющих концепцию видимости) private
видимость для каждого класса, доступ к полю разрешен для всего кода MutableInteger
, не относящегося к какому экземпляру для его вызова.
Как это связано с инкапсуляцией? – p4bl0
Частная видимость заключается в том, как инкапсуляция реализована на таких языках, как Java, C++ и C# –
@ p4bl0 Как связаны инкапсуляция и область видимости переменной? Довольно принципиально. – meagar