Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java statische verschachtelte Klassen verstehen: Nutzung, Unterschiede und Beispiele

Java statische verschachtelte Klasse

Entdecken Sie, wie Javas statische verschachtelte Klassen funktionieren, wie sie sich von inneren Klassen unterscheiden und wann Sie sie mit praktischen Code-Beispielen einsetzen sollten.

In Java kann eine Klasse innerhalb einer anderen Klasse definiert werden. Diese werden verschachtelte Klassen genannt und kommen in zwei Formen vor:

Während innere Klassen in unserem vorherigen Tutorial behandelt wurden, fokussiert sich dieser Artikel auf statische verschachtelte Klassen.


Java statische verschachtelte Klasse

Um eine verschachtelte Klasse als statisch zu deklarieren, fügen Sie einfach das static-Schlüsselwort voran:

class Tier { static class Saeugetier { // statische und nicht-statische Member von Säugetier } // Member von Tier } 

Hinweis: Nur verschachtelte Klassen können als statisch deklariert werden; Top-Level-Klassen können nicht.

Wie jede Klasse kann eine statische verschachtelte Klasse sowohl statische als auch Instanz-Member enthalten.

Da sie ein statisches Member ihrer äußeren Klasse ist, können Sie auf eine statische verschachtelte Klasse zugreifen, ohne eine Instanz der äußeren Klasse zu erstellen.


Beispiel: Statische verschachtelte Klasse

class Tier { // innere Klasse class Reptil { public void infoAnzeigen() { System.out.println("Ich bin ein Reptil."); } } // statische verschachtelte Klasse static class Saeugetier { public void infoAnzeigen() { System.out.println("Ich bin ein Säugetier."); } } } class Haupt { public static void main(String[] args) { // äußere Klassen-Instanz erstellen Tier tier = new Tier(); // Instanz der nicht-statischen inneren Klasse erstellen Tier.Reptil reptil = tier.new Reptil(); reptil.infoAnzeigen(); // Instanz der statischen verschachtelten Klasse erstellen Tier.Saeugetier saeugetier = new Tier.Saeugetier(); saeugetier.infoAnzeigen(); } } 

Ausgabe:

Ich bin ein Reptil. Ich bin ein Säugetier. 

Im obigen Code ist Saeugetier eine statische verschachtelte Klasse, während Reptil eine innere Klasse ist.

Beachten Sie die unterschiedliche Instanziierungssyntax:


Auf Member der äußeren Klasse zugreifen

Da eine statische verschachtelte Klasse mit ihrer äußeren Klasse assoziiert ist, kann sie nur statische Member der äußeren Klasse zugreifen. Versuche, Instanz-Member zu referenzieren, führen zu einem Kompilierfehler.

Beispiel: Versuch, eine nicht-statische Methode aufzurufen

class Tier { static class Saeugetier { public void infoAnzeigen() { System.out.println("Ich bin ein Säugetier."); } } class Reptil { public void infoAnzeigen() { System.out.println("Ich bin ein Reptil."); } } public void essen() { System.out.println("Ich esse Futter."); } } class Haupt { public static void main(String[] args) { Tier tier = new Tier(); Tier.Reptil reptil = tier.new Reptil(); reptil.infoAnzeigen(); Tier.Saeugetier saeugetier = new Tier.Saeugetier(); saeugetier.infoAnzeigen(); saeugetier.essen(); // ❌ Kompilierfehler } } 

Ausgabe:

Main.java:28: error: cannot find symbol saeugetier.essen(); ^ symbol: method essen() location: variable saeugetier of type Säugetier 1 error compiler exit status 1 

Der Fehler tritt auf, weil saeugetier eine Instanz einer statischen verschachtelten Klasse ist und die nicht-statische essen()-Methode von Tier nicht aufrufen kann.


Statische Top-Level-Klasse?

Java verbietet statische Top-Level-Klassen. Nur verschachtelte Klassen können als statisch deklariert werden. Der folgende Code demonstriert den Compiler-Fehler:

static class Tier { public static void infoAnzeigen() { System.out.println("Ich bin ein Tier"); } } class Haupt { public static void main(String[] args) { Tier.infoAnzeigen(); } } 

Ausgabe:

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

Dies bestätigt, dass nur verschachtelte Klassen statisch sein können.

Java

  1. C# Static Keyword: Statische Variablen, Methoden und Klassen meistern
  2. C# Geschachtelte Klassen verstehen: Definition, Verwendung und Vererbung
  3. Javas final-Schlüsselwort verstehen: Variablen, Methoden und Klassen
  4. Java instanceof-Operator: Ein umfassender Leitfaden
  5. Java verschachtelte und innere Klassen meistern: Typen, Beispiele und Best Practices
  6. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  7. Java Singleton-Pattern erklärt: Sichere Implementierung und Verwendung
  8. Java Reflection meistern: Klassen, Methoden und Felder zur Laufzeit inspizieren
  9. Java ObjectOutputStream meistern: Serialisierung, Methoden und praktische Beispiele
  10. Java Generics meistern – Wiederverwendbaren, typsicheren Code erstellen