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

Chi*_*hip 7 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);
    }

}

}
Run Code Online (Sandbox Code Playgroud)

Why*_*ugo 8

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