我发现java中的两个嵌套类可以访问彼此的私有成员。为什么会这样?它是一个错误还是标准指定的?
以下代码编译并运行时没有错误。
public class Main {
public static void main(String args[]) {
A a = new A();
a.var1 = 12;
B b = new B();
System.out.println(a.var1);
b.printA(a);
}
private static class A {
private int var1;
}
private static class B {
private int var2;
public void printA(A a) {
// B accesses A's private variable
System.out.println(a.var1);
}
}
}
答案 0 :(得分:7)
是的,这是预期的。变量为private是指它不能在Main
范围之外访问,但它可以在此范围内的任何位置访问,其方式非常类似于同一类的两个实例可以访问彼此的私有成员。 / p>