Java中的兄弟嵌套类可以访问彼此的私有成员

时间:2012-08-10 23:56:10

标签: java nested-class private-members

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

}

}

1 个答案:

答案 0 :(得分:7)

是的,这是预期的。变量为private是指它不能在Main范围之外访问,但它可以在此范围内的任何位置访问,其方式非常类似于同一类的两个实例可以访问彼此的私有成员。 / p>