Verschachtelte statische Java-Klasse

In diesem Tutorial lernen Sie anhand von Beispielen die verschachtelte statische Klasse kennen. Sie erfahren auch, wie sich statische Klassen von inneren Klassen unterscheiden.

Wie in früheren Tutorials gelernt, können wir eine Klasse in einer anderen Klasse in Java haben. Solche Klassen werden als verschachtelte Klassen bezeichnet. In Java gibt es zwei Arten verschachtelter Klassen:

  • Verschachtelte nicht statische Klasse (innere Klasse)
  • Verschachtelte statische Klasse.

Wir haben bereits im vorherigen Tutorial über innere Klassen gesprochen. Besuchen Sie Java Nested Class, wenn Sie mehr über innere Klassen erfahren möchten.

In diesem Tutorial lernen wir verschachtelte statische Klassen kennen.

Verschachtelte statische Java-Klasse

Wir verwenden das Schlüsselwort static, um unsere verschachtelte Klasse statisch zu machen.

Hinweis: In Java dürfen nur verschachtelte Klassen statisch sein.

Wie reguläre Klassen können statisch verschachtelte Klassen sowohl statische als auch nicht statische Felder und Methoden enthalten. Beispielsweise,

 Class Animal ( static class Mammal ( // static and non-static members of Mammal ) // members of Animal ) 

Statische verschachtelte Klassen sind der äußeren Klasse zugeordnet.

Für den Zugriff auf die statisch verschachtelte Klasse benötigen wir keine Objekte der äußeren Klasse.

Beispiel: Statisch verschachtelte Klasse

 class Animal ( // inner class class Reptile ( public void displayInfo() ( System.out.println("I am a reptile."); ) ) // static class static class Mammal ( public void displayInfo() ( System.out.println("I am a mammal."); ) ) ) class Main ( public static void main(String() args) ( // object creation of the outer class Animal animal = new Animal(); // object creation of the non-static class Animal.Reptile reptile = animal.new Reptile(); reptile.displayInfo(); // object creation of the static nested class Animal.Mammal mammal = new Animal.Mammal(); mammal.displayInfo(); ) ) 

Ausgabe

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

Im obigen Programm haben wir zwei verschachtelte Klassen Säugetiere und Reptilien in einer Klasse Tier.

Um ein Objekt der nicht statischen Klasse Reptile zu erstellen, haben wir verwendet

 Animal.Reptile reptile = animal.new Reptile() 

Um ein Objekt der statischen Klasse Mammal zu erstellen, haben wir verwendet

 Animal.Mammal mammal = new Animal.Mammal() 

Zugriff auf Mitglieder der äußeren Klasse

In Java werden statische verschachtelte Klassen der äußeren Klasse zugeordnet. Aus diesem Grund können statisch verschachtelte Klassen nur auf die Klassenmitglieder (statische Felder und Methoden) der äußeren Klasse zugreifen.

Mal sehen, was passiert, wenn wir versuchen, auf nicht statische Felder und Methoden der äußeren Klasse zuzugreifen.

Beispiel: Zugriff auf nicht statische Elemente

 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(); ) ) 

Ausgabe

Main.java:28: Fehler: Symbol mammal.eat () kann nicht gefunden werden; Symbol: Methode eat () Ort: Variable Säugetier vom Typ Säugetier 1 Fehler Compiler Exit Status 1

Im obigen Beispiel haben wir eine nicht statische Methode eat()innerhalb der Klasse Animal erstellt.

Wenn wir nun versuchen, eat()mit dem Objekt mammal darauf zuzugreifen , zeigt der Compiler einen Fehler an.

Dies liegt daran, dass Säugetiere ein Objekt einer statischen Klasse sind und wir nicht über statische Klassen auf nicht statische Methoden zugreifen können.

Statische Klasse der obersten Ebene

Wie oben erwähnt, können nur verschachtelte Klassen statisch sein. Wir können keine statischen Klassen der obersten Ebene haben.

Mal sehen, was passieren wird, wenn wir versuchen, eine Klasse der obersten Ebene statisch zu machen.

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

Ausgabe

 Main.java:1: Fehler: Modifikator statisch hier nicht erlaubt statische Klasse Animal (1 Fehler Compiler Exit Status 1 

Im obigen Beispiel haben wir versucht, eine statische Klasse Animal zu erstellen. Da Java keine statische Klasse der obersten Ebene zulässt, wird eine Fehlermeldung angezeigt.

Interessante Beiträge...