[解決済み] なぜ外側のJavaクラスは内側のクラスのプライベート・メンバにアクセスできるのですか?
2022-04-13 17:10:42
質問
外部クラスが内部クラスのプライベートインスタンス変数にアクセスできることを確認しました。これはどのようにして可能なのでしょうか?以下は、それを示すサンプルコードです。
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??
}
}
なぜこのような動作が許されるのでしょうか?
解決方法は?
インナークラスは、本来アウタークラスに属する機能をきれいに分離するための手段に過ぎません。 これらは、2つの要件がある場合に使用されることを意図しています。
- 外側のクラスの機能の一部は、別のクラスで実装された場合、最も明確になります。
- 別のクラスであっても、その機能は外側のクラスの動作と非常に密接に結びついています。
これらの要件を満たすために、内部クラスは外部クラスへのフルアクセスを持ちます。 内部クラスは基本的に外部クラスのメンバーなので、外部クラスのメソッドや属性(非公開も含む)にアクセスできるのは理にかなっています。
関連
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
プロローグでのコンテンツは禁止されています
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
このラインで複数のマーカーを解決する方法
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み】Javaで異なるクラスからプライベートフィールドの値を読み取る方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Exceptionが発生しました エラー解決
-
IllegalArgumentException この例外を解決する方法
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
サーブレットクラスのインスタンス化エラーの解決法
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
linux run jarfile Invalid or corrupt jarfile error.
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
HttpClientがGZIP形式でない場合の対処法
-
コミットには何も追加されないが、未追跡のファイルが存在し、gitで未追跡のファイルに対する完璧な解決策