3

MyOuterという名前の単純な内部クラスで構成されるという名前のクラスがあるとしMyInnerます。内部クラスがどのように機能するかを学ぶ際に、外部クラスのプライベートメンバー変数が内部クラス自体からアクセスできるかどうかを理解しようとしています。

class MyOuter {
  private int x = 7;
  // inner class definition
  class MyInner {
    public void seeOuter() {
      System.out.println("Outer x is " + x);
    }
  } // close inner class definition
} // close outer class

私の分析によると、前述のコードは完全に合法です。内部クラスが実際に外部クラスのプライベートメンバーにアクセスしていることに注意してください。内部クラスは外部クラスのメンバーでもあるため、これで問題ありません。したがって、外部クラスの任意のメンバー(たとえば、インスタンスメソッド)がプライベートであるかどうかに関係なく、外部クラスの他のメンバーにアクセスできるのと同じように、内部クラス(メンバーでもある)も同じことを行うことができます。

私の理由が正しかったかどうか教えてください。

4

1 に答える 1

2

内部クラスは、それを囲むクラスのメンバーであり、そのオブジェクトのメソッドとフィールドに直接アクセスできます。詳細については、ネストされたクラスを参照してください。

于 2013-02-28T01:33:04.793 に答える