Я не должен вызывать закрытый метод экземпляра объекта.Интересно, почему код ниже работает.
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");
}
}
Я понимаю, что приватный метод доступен из класса.Но если метод внутри класса создает экземпляр объекта того же класса, разве правила области не должны применяться к этому экземпляру объекта?
Может ли статический метод, такой как main, получить доступ к нестатическому члену класса, как указанов этом примере?