Je ne devrais pas pouvoir invoquer une méthode privée d'un objet instancié. Je me demande pourquoi le code ci-dessous fonctionne.
public class SimpleApp2 {
/**
* @param args
*/
private int var1;
public static void main(String[] args) {
SimpleApp2 s = new SimpleApp2();
s.method1(); // interesting?!
}
private void method1() {
System.out.println("this is method1");
this.method2(); // this is ok
SimpleApp2 s2 = new SimpleApp2();
s2.method2(); // interesting?!
System.out.println(s2.var1); // interesting?!
}
private void method2() {
this.var1 = 10;
System.out.println("this is method2");
}
}
Je comprends qu'une méthode privée est accessible depuis l'intérieur de la classe. Mais si une méthode à l'intérieur d'une classe instancie un objet de cette même classe, les règles de portée ne devraient-elles pas s'appliquer à cet objet instancié ?
Une méthode statique comme main peut-elle accéder à un membre non statique de la classe, comme indiqué dans cet exemple ?