内部クラスで変数をプライベートとして宣言すると、その変数は外部クラスから見えるようになります。ここのロジックが理解できません。理想的には、内部クラス内でのみアクセスできるべきではありませんか?
1 に答える
基本的に、Sun / Oracleの言語設計者が特定の動作を許可することにした理由を尋ねているように思われるため、答えは主観的なものだと思います。
そうは言っても、ここに答えの試みがあります...
最初のいくつかの用語では、クラス内で宣言されたクラスはネストされたクラスです。内部クラスは非静的なネストされたクラスであり、外部クラスのインスタンス内に存在する必要があります。したがって、内部クラスは外部クラスの一部であり、その意味で、内部クラスのすべてのメンバーは、ある程度外部クラスのメンバーです。
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
インスタンスのメソッドと変数と同様に、内部クラスはそれを囲むクラスのインスタンスに関連付けられており、そのオブジェクトのメソッドとフィールドに直接アクセスできます。また、内部クラスはインスタンスに関連付けられているため、静的メンバー自体を定義することはできません。
もう1つの考えは、内部クラスの有効なユースケースでは、内部クラスが外部クラスからメンバーを非表示にする必要がないということです。つまり、外部クラスが内部クラスに結合されないという概念はありません。
なぜprivate
それなら許可するのですか?プライベートメンバーは、内部クラスのインスタンスにアクセスできる可能性のある他のクラスから引き続き非表示にできるためです。