8

我发现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);
    }

}

}
4

1 回答 1

9

是的,这是预期的。变量是私有的意味着它不能在 的范围之外被访问Main,但是它可以在这个范围内的任何地方被访问,以非常相似的方式,同一个类的两个实例可以访问彼此的私有成员。

于 2012-08-11T00:00:57.870 回答