質問:
なぜ外部 Java クラスは内部クラスのプライベート メンバーにアクセスできるのでしょうか?次のコード スニペットは、この動作を示しています。
class ABC { class XYZ { private int x = 10; } public static void main(String... args) { ABC.XYZ xx = new ABC().new XYZ(); System.out.println("Hello :: " + xx.x); // Why is this allowed? } }
回答:
Java のネストされたクラスは、それを囲んでいるクラスの権限を継承します。具体的には、内部クラスは外部クラスの次の要素にアクセスできます。
この動作により、内部クラスは外部クラスと密接に結びついている機能をカプセル化することができますが、それを分離することができます。
内部クラスは本質的に外部クラスのメンバーであり、プライベートとしてマークされたクラスを含むそのメンバーにアクセスできるようになります。このアクセスが許可される理由は、内部クラス:
したがって、上記のコード スニペットは有効です。 XYZ は、外部クラス ABC のプライベート メンバー x にアクセスできます。これらは密接に関連しており、同じクラス宣言に一緒にカプセル化されているためです。
以上が外部 Java クラスが内部クラスのプライベート メンバーにアクセスできるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。