Recentemente, ho osservato un comportamento imprevisto di accesso ai campi priavte in Java. Si consideri il seguente esempio, che illustra il comportamento:Perché è consentito l'accesso a un campo privato di un altro oggetto?
public class A {
private int i; <-- private field!
public A(int i) {
this.i = i;
}
public void foo(A a) {
System.out.println(this.i); // 1. Accessing the own private field: good
System.out.println(a.i); // 2. Accessing private field of another object!
}
public static void main(String[] args) {
(new A(5)).foo(new A(2));
}
}
Perché mi è permesso di accedere al campo privato di un altro oggetto della classe A
all'interno del foo
metodo (2 ° caso)?
Utilizzare la formattazione del codice per codice, input/output e documenti strutturati come HTML o XML. Per farlo, seleziona il campione e fai clic sul pulsante '{}' sopra il modulo di pubblicazione/modifica. –