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