工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java Staticネストクラスの理解:用法、違い、実例

Java Staticネストクラス

Javaのstaticネストクラスの仕組み、インナークラスとの違い、実践的なコード例でいつ使うかを発見してください。

Javaでは、クラスを別のクラス内に定義できます。これらはネストクラスと呼ばれ、2つの形があります:

インナークラスは前回のチュートリアルで扱いました。この記事はstaticネストクラスに焦点を当てます。


Java Staticネストクラス

ネストクラスをstaticにするには、単にstaticキーワードを前置します:

class Animal { static class Mammal { // Mammalのstaticおよび非staticメンバ } // Animalのメンバ } 

注意: ネストクラスのみstatic宣言可能;トップレベルクラスは不可。

通常のクラスと同様に、staticネストクラスはstaticおよびインスタンスメンバの両方を持てます。

外部クラスのstaticメンバであるため、外部クラスのインスタンスを作成せずにstaticネストクラスにアクセスできます。


例:Staticネストクラス

class Animal { // インナークラス class Reptile { public void displayInfo() { System.out.println("I am a reptile."); } } // staticネストクラス static class Mammal { public void displayInfo() { System.out.println("I am a mammal."); } } } class Main { public static void main(String[] args) { // 外部クラスインスタンスを作成 Animal animal = new Animal(); // 非staticインナークラスのインスタンス作成 Animal.Reptile reptile = animal.new Reptile(); reptile.displayInfo(); // staticネストクラスのインスタンス作成 Animal.Mammal mammal = new Animal.Mammal(); mammal.displayInfo(); } } 

出力

I am a reptile. I am a mammal. 

上記コードでは、Mammalがstaticネストクラス、Reptileがインナークラスです。

異なるインスタンス化構文に注目:


外部クラスメンバへのアクセス

staticネストクラスは外部クラスに関連付けられているため、外部クラスのstaticメンバのみアクセスできます。インスタンスメンバを参照しようとするとコンパイルエラーになります。

例:非staticメソッド呼び出しの試み

class Animal { static class Mammal { public void displayInfo() { System.out.println("I am a mammal."); } } class Reptile { public void displayInfo() { System.out.println("I am a reptile."); } } public void eat() { System.out.println("I eat food."); } } class Main { public static void main(String[] args) { Animal animal = new Animal(); Animal.Reptile reptile = animal.new Reptile(); reptile.displayInfo(); Animal.Mammal mammal = new Animal.Mammal(); mammal.displayInfo(); mammal.eat(); // ❌ コンパイルエラー } } 

出力**

Main.java:28: error: cannot find symbol mammal.eat(); ^ symbol: method eat() location: variable mammal of type Mammal 1 error compiler exit status 1 

エラーは、mammalがstaticネストクラスのインスタンスであり、Animalの非staticeat()メソッドを呼び出せないため発生します。


Staticトップレベルクラス?

Javaはstaticトップレベルクラスを禁止しています。ネストクラスのみstatic宣言可能。以下のコードでコンパイルエラーを確認:

static class Animal { public static void displayInfo() { System.out.println("I am an animal"); } } class Main { public static void main(String[] args) { Animal.displayInfo(); } } 

出力**

Main.java:1: error: modifier static not allowed here static class Animal { ^ 1 error compiler exit status 1 

これにより、ネストクラスのみがstaticになれることが確認されます。

Java

  1. C# static キーワード:静的変数、メソッド、クラスをマスターする
  2. C# 入れ子クラスを理解する:定義、使用法、継承
  3. Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
  4. Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
  5. Javaネストクラスとインナークラス完全ガイド:種類、例、ベストプラクティス
  6. Java無名インナークラス完全ガイド:定義、構文、実践例
  7. Javaシングルトンパターン完全解説:安全な実装と活用法
  8. Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
  9. Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例
  10. Javaジェネリクス完全ガイド:再利用可能で型安全なコードの構築
  11. Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除