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

Verschachtelte statische Java-Klasse

Java verschachtelte statische Klasse

In diesem Tutorial lernen Sie anhand von Beispielen verschachtelte statische Klassen kennen. Außerdem erfahren Sie, wie sich statische Klassen von inneren Klassen unterscheiden.

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

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

In diesem Tutorial lernen wir verschachtelte statische Klassen kennen.


Java verschachtelte statische 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 normale Klassen können statische verschachtelte Klassen sowohl statische als auch nicht statische Felder und Methoden enthalten. Zum Beispiel

Class Animal {
   static class Mammal {
      // static and non-static members of Mammal
   }
   // members of Animal
} 

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

Um auf die statisch verschachtelte Klasse zuzugreifen, 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

I am a reptile.
I am a mammal.

Im obigen Programm haben wir zwei verschachtelte Klassen Mammal und Reptil innerhalb einer Klasse Animal .

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 mit der äußeren Klasse verknüpft. 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 Mitglieder

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: error: cannot find symbol
    mammal.eat();
          ^
  symbol:   method eat()
  location: variable mammal of type Mammal
1 error
compiler exit status 1

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

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

Es ist, weil Säugetier ist ein Objekt einer statischen Klasse und wir können nicht auf nicht-statische Methoden von statischen Klassen zugreifen.


Statische Top-Level-Klasse

Wie oben erwähnt, können nur verschachtelte Klassen statisch sein. Wir können keine statischen Top-Level-Klassen haben.

Mal sehen, was passiert, wenn wir versuchen, eine Top-Level-Klasse 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: error: modifier static not allowed here
static class Animal {
       ^
1 error
compiler exit status 1

Im obigen Beispiel haben wir versucht, eine statische Klasse Tier zu erstellen . Da Java keine statische Top-Level-Klasse zulässt, erhalten wir eine Fehlermeldung.


Java

  1. Statisches C#-Schlüsselwort
  2. Verschachtelte C#-Klasse
  3. Letztes Java-Schlüsselwort
  4. Java-Instanz des Operators
  5. Java verschachtelte und innere Klasse
  6. Anonyme Java-Klasse
  7. Java-Singleton-Klasse
  8. Java-Reflexion
  9. Java ObjectOutputStream-Klasse
  10. Java-Generika