7

最近、Java のプライベート フィールドにアクセスする際の予期しない動作を確認しました。動作を示す次の例を検討してください。

public class A {

    private int i;  <-- private field!

    public A(int i) {
        this.i = i;
    }

    public void foo(A a) {
        System.out.println(this.i);  // 1. Accessing the own private field: good
        System.out.println(a.i);     // 2. Accessing private field of another object!
    }

    public static void main(String[] args) {
        (new A(5)).foo(new A(2));
    }
}

Aメソッド内のクラスの別のオブジェクトのプライベート フィールドにアクセスできるのはなぜfooですか (2 番目のケース)?

4

3 に答える 3