静的 内部クラスのフィールドとメソッド: 制限と理由
内部クラス (ネストされたクラスとも呼ばれます)別のクラス内で宣言されたクラスです。これらは、インスタンス内部クラスまたは静的内部クラスのいずれかとして分類されます。
インスタンス内部クラス
インスタンス内部クラスは、その名前が示すように、外側のクラスのインスタンスに関連付けられます。クラス。これらは、 this キーワードを介して、外側のクラスのインスタンス変数とメソッドにアクセスできます。ただし、静的フィールドとメソッドはインスタンスの内部クラスでは許可されません。
静的内部クラス
一方、静的内部クラスは、クラスのインスタンス変数またはメソッドを囲みます。これらは、外側のクラス内でネストされた通常のクラスのように動作し、静的フィールドとメソッドを宣言できます。
内部クラスの静的フィールドとメソッドに関する制限
Java では、静的フィールドと静的メソッドを禁止しています。インスタンス内部クラスのメソッドの理由:
実装に関する考慮事項
技術的には、静的フィールドの制限内部クラスのメソッドは Java 仮想マシン (JVM) によって強制されます。 JVM は各内部クラス インスタンスに実行時識別子を割り当て、それらを囲むクラス インスタンスごとに一意にします。その結果、JVM は内部クラス内のクラス レベルのメンバーとインスタンス レベルのメンバーを区別できないため、コンパイラは内部クラスで静的フィールドまたは静的メソッドを宣言しようとする試みにフラグを立てます。
要約すると、Java は、クラス全体の動作とインスタンス固有の動作の明確な区別を維持し、スレッドの安全性を確保し、インスタンス関連のメンバーと静的メンバーを分離する言語設計原則に準拠するために、インスタンスの内部クラス内の静的フィールドとメソッドを禁止しています。 .
以上がJava のインスタンス内部クラスで静的フィールドとメソッドが許可されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。