ホームページ > Java > &#&チュートリアル > 外部 Java クラスが内部クラスのプライベート メンバーにアクセスできるのはなぜですか?

外部 Java クラスが内部クラスのプライベート メンバーにアクセスできるのはなぜですか?

Patricia Arquette
リリース: 2024-12-07 19:42:18
オリジナル
1051 人が閲覧しました

Why Can Outer Java Classes Access Inner Class Private Members?

Java のネストされたクラスのアクセス権限

質問:

なぜ外部 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート