codice di esempio (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; // <------------
}
}
Se l'ipotesi "variabili membro private sono private all'istanza" fosse corretta, la linea tracciata causerebbe un errore di compilazione, perché il campo other.value
è privato e parte di un oggetto diverso da quello in cui viene chiamato il metodo equals()
.
Ma dal momento che in Java (e nella maggior parte delle altre lingue con il concetto di visibilità) private
visibilità è per classe, l'accesso al campo è consentito a tutto il codice dello MutableInteger
, irrilevante di quale istanza è stata utilizzata per invocarlo.
fonte
2009-08-31 13:42:21
Come questo è correlato all'incapsulamento? – p4bl0
visibilità privata è come l'incapsulazione viene implementata in linguaggi come Java, C++ e C# –
@ p4bl0 Come sono correlati l'incapsulamento e l'ambito della variabile? Piuttosto fondamentalmente. – meagar