Przykład kodu (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; // <------------
}
}
Jeżeli założenie „prywatne zmienne składowe są prywatne do instancji” były prawidłowe, oznaczona linia spowoduje błąd kompilatora, ponieważ pole other.value
jest prywatny i część innego obiektu niż ten, którego metoda jest wywoływana.
Ale ponieważ w Javie (i większości innych języków, które mają koncepcję widoczności) private
widoczność jest za klasą, dostęp do pola jest dozwolony dla całego kodu MutableInteger
, nieistotny dla instancji użytej do jej wywołania.
Jak to jest związane z enkapsulacją? – p4bl0
Prywatna widoczność polega na implementacji enkapsulacji w językach takich jak Java, C++ i C# –
@ p4bl0 W jaki sposób powiązane są enkapsulacja i zakres zmienny? Całkiem fundamentalnie. – meagar