Código de ejemplo (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; // <------------
}
}
Si el supuesto "variables miembro privadas son privadas a la instancia" eran correctas, la línea marcada provocaría un error de compilación, porque el campo other.value
es privada y parte de un objeto diferente al que se llama al método equals()
.
Pero como en Java (y la mayoría de los otros idiomas que tienen el concepto de visibilidad) private
la visibilidad es por clase, el acceso al campo está permitido a todos los códigos MutableInteger
, independientemente de qué instancia se utilizó para invocarlo.
¿Cómo se relaciona esto con la encapsulación? – p4bl0
visibilidad privada es cómo se implementa la encapsulación en lenguajes como Java, C++ y C# –
@ p4bl0 ¿Cómo se relacionan el encapsulamiento y el ámbito variable? Bastante fundamentalmente. – meagar