English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Tutorial werden Sie durch Beispiele eingebaute statische Klassen lernen. Sie werden auch die Unterschiede zwischen statischen Klassen und internen Klassen verstehen.
Wie in den vorherigen Tutorials erwähnt, können wir in einer anderen Klasse in Java eine Klasse haben. Eine solche Klasse wird als eingebaute Klasse bezeichnet. In Java gibt es zwei Arten von eingebaute Klassen:
eingebaute nicht-statische Klasse (interne Klasse)
eingebaute statische Klasse.
Im vorherigen Tutorial haben wir bereits interne Klassen besprochen. Wenn Sie mehr über interne Klassen erfahren möchten, besuchen Sie bitteJava eingebaute Klasse.
In diesem Tutorial werden wir eingebaute statische Klassen lernen.
Wir verwenden den Schlüsselwort static, um unsere eingebaute Klasse statisch zu machen.
Hinweis:In Java sind nur eingebaute Klassen statisch erlaubt.
Wie bei gewöhnlichen Klassen können statische Nestklasse sowohl statische als auch nicht-statische Felder und Methoden enthalten. Zum Beispiel,
Klasse Animal { static class Mammal { // Statische und statische Member der Klasse Mammal } // Mitglied der Klasse Animal }
Statische Nestklasse sind mit der externen Klasse verbunden.
Um auf die statische Nestklasse zuzugreifen, benötigen wir kein Objekt der externen Klasse.
class Animal { //Eingebettete Klasse class Reptile { public void displayInfo() { System.out.println("Ich bin ein Reptil."); } } //Statische Klasse static class Mammal { public void displayInfo() { System.out.println("Ich bin ein Säugetier."); } } } class Main { public static void main(String[] args) { //Objekterstellung der externen Klasse Animal animal = new Animal(); //Objekterstellung von nicht statischen Klassen Animal.Reptile reptile = animal.new Reptile(); reptile.displayInfo(); //Objekterstellung von statischen Nestklassen Animal.Mammal mammal = new Animal.Mammal(); mammal.displayInfo(); } }
Ausgaberesultat
Ich bin ein Reptil. Ich bin ein Säugetier.
Im obigen Programm haben wir in der Klasse Animal zwei eingebettete Klassen Mammal und Reptile.
Um ein Objekt der nicht statischen Klasse Reptile zu erstellen, haben wir
Animal.Reptile reptile = animal.new Reptile()
Um ein Objekt der statischen Klasse Mammal zu erstellen, haben wir
Animal.Mammal mammal = new Animal.Mammal()
In Java sind statische Nestklasse mit der externen Klasse verbunden. Dies ist der Grund, warum statische Nestklasse nur auf die Klassenmitglieder der externen Klasse (statische Felder und Methoden) zugreifen kann.
Lassen Sie uns sehen, was passiert, wenn wir versuchen, auf die nicht statischen Felder und Methoden einer externen Klasse zuzugreifen.
class Animal { static class Mammal { public void displayInfo() { System.out.println("Ich bin ein Säugetier."); } } class Reptile { public void displayInfo() { System.out.println("Ich bin ein Reptil."); } } public void eat() { System.out.println("Ich esse Nahrung."); } } 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(); } }
Ausgaberesultat
Main.java:28: Fehler: Symbol nicht gefunden mammal.eat(); ^ symbol: Methode eat() location: Variable mammal vom Typ Mammal 1 Fehler Kompilierer-Ausgangsstatus 1
Im obigen Beispiel haben wir in der Klasse Animal eine nicht statische Methode eat() erstellt.
Nun, wenn wir versuchen, das Objekt mammal auf die Methode eat() zuzugreifen, zeigt der Compiler einen Fehler an.
Dies liegt daran, dass mammal ein Objekt einer statischen Klasse ist, daher können wir keine nicht-statischen Methoden aus einer statischen Klasse aufrufen.
Wie erwähnt, können nur verschachtelte Klassen statisch sein. Wir können keine statischen Top-Klassen haben.
Lassen Sie uns sehen, was passiert, wenn wir versuchen, eine Top-Klasse zu statisch zu machen.
static class Animal { public static void displayInfo() { System.out.println("Ich bin ein Tier"); } } class Main { public static void main(String[] args) { Animal.displayInfo(); } }
Ausgaberesultat
Main.java:1: Fehler: Modifikator static hier nicht erlaubt static class Animal { ^ 1 Fehler Kompilierer-Ausgangsstatus 1
In dem obigen Beispiel versuchen wir, eine statische Klasse Animal zu erstellen. Da Java das Verwenden von statischen Top-Klassen nicht erlaubt, tritt ein Fehler auf.