8

Java でネストされた 2 つのクラスが、互いのプライベート メンバーにアクセスできることがわかりました。これはなぜですか?それはバグですか、それともこれは標準で指定されているものですか?

次のコードは、エラーなしでコンパイルおよび実行されます。

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ますが、同じクラスの 2 つのインスタンスが互いのプライベート メンバーにアクセスできるのと非常によく似た方法で、このスコープ内のどこからでもアクセスできます。

于 2012-08-11T00:00:57.870 に答える