Anonyme innere Klasse in Java ist eine innere Klasse oder verschachtelte Klasse. Eine innere Klasse ist eine Klasse, die innerhalb einer äußeren Klasse vorhanden ist. Eine anonyme innere Klasse ist also eine innere Klasse, die keinen Namen hat. Es handelt sich entweder um eine Unterklasse einer Klasse oder um eine Implementierung einer Schnittstelle. Wenn wir also eine Klasse oder Schnittstellenmethode überschreiben müssen, können wir eine anonyme innere Klasse verwenden. Im Fall der anonymen inneren Klasse folgt auf eine geschweifte Klammer das Semikolon.
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Es gibt zwei Möglichkeiten, eine anonyme innere Klasse zu erstellen.
Syntax:
Unten finden Sie die Syntax, wobei die Klasse eine abstrakte Klasse oder eine konkrete Klasse oder Schnittstelle sein kann.
class t = new class() { // class variables and methods members public void class_method() { /* some code of the class_method */ } };
Im Folgenden finden Sie die genannten Beispiele:
Ein Beispiel, in dem wir eine Schnittstelle und eine einfache Klasse erstellen, die diese Schnittstelle implementiert.
Code:
package p1; interface Emp { int eid = 2101; void geteid(); } // Implclass implement an Emp Interface and provide the defination for geteid() method class ImplClass implements Emp { @Override public void geteid() { // display the eid System.out.print("Employee id is "+eid); } } class Demo { public static void main( String[] arg ) { // create object of Implclass which implements Emp interface ImplClass ob=new ImplClass(); // call geteid() method which implemented by Implclass ob.geteid(); } }
Ausgabe:
Wie im obigen Code wird eine Schnittstelle Emp mit der Methode geteid() und eid=2101 erstellt. ImplClass implementiert eine Emp-Schnittstelle und stellt die Definition für die geteid()-Methode bereit. Es ist nicht erforderlich, eine separate Klasse ImplClass zu schreiben; Stattdessen kann es als anonyme innere Klasse verwendet werden.
Hier schreiben wir den obigen Java-Code um, um zu sehen, wie eine innere Klasse funktioniert. Auf die ImplClass-Klasse können andere Klassen in der Anwendung zugreifen. Die Funktionalität der ImplClass-Klasse wird jedoch von der anderen Klasse in der Anwendung nicht benötigt. Deshalb müssen wir keine äußere Klasse definieren. Darüber hinaus wird eine Instanz dieser Klasse nur einmal verwendet. Daher kann mit Hilfe einer anonymen inneren Klasse die Funktionalität der ImplClass-Klasse implementiert werden. Im folgenden Beispiel haben wir das Objekt der Klasse direkt durch die Implementierung von Empinterfece erstellt.
Code:
package p1; interface Emp { int eid = 2101; void geteid(); } class Demo { public static void main( String[] arg ) { // Implclass is hidden inner class implement an Emp Interface // Implclass class name is not created but an object is creating below Emp ob = new Emp() { @Override public void geteid() { // display the eid System.out.print("Employee id is "+eid); } }; // call geteid() method which implemented by Implclass ob.geteid(); } }
Ausgabe:
Wie im obigen Code wird kein Objekt von Emp erstellt; Implizit wird ein Objekt der Klasse ImplClass (möglicherweise nicht derselbe Name) erstellt. Beachten Sie, dass die innere Klasse keinen Namen hat. Daher entscheidet der Compiler über einen Namen, erstellt ihn und implementiert die Emp-Schnittstelle.
Java-Code zum Erstellen einer anonymen inneren Klasse, die eine Klasse erweitert.
Code:
package p1; class Emp { void dispMesg() { System.out.println("This message is from main class"); } } class Demo { public static void main( String[] arg ) { // Anonymous hidden inner class extends an Emp class // Anonymous class name is not created but an object is creating below Emp ob = new Emp() { @Override // override dispMesg() method in child Anonymous inner class public void dispMesg() { System.out.print("This message is from child class"); } }; // call geteid() method which implemented by Implclass ob.dispMesg(); } }
Ausgabe:
Java-Code zum Erstellen einer anonymen inneren Klasse, die eine abstrakte Klasse erweitert.
Code:
package p1; abstract class Emp { void dispMesg() { System.out.println("This message is from main class"); } abstract void abstrct_method(); } class Demo { public static void main( String[] arg ) { // Anonymous hidden inner class extends an Emp abstract class // Anonymous class name is not created but an object is creating below Emp ob = new Emp() { @Override public void dispMesg() { System.out.println("This message is from child class"); } @Override void abstrct_method() { System.out.println("Abstract Method"); } }; ob.dispMesg(); ob.abstrct_method(); } }
Ausgabe:
Java-Code zum Erstellen einer anonymen inneren Klasse, die einen inneren Konstruktor oder ein Methodenargument definiert, wobei wir die vordefinierte Thread-Klasse und die ausführbare Schnittstelle verwenden, um einen Thread zu erstellen und auszuführen.
Code:
package p1; class Demo { public static void main( String[] arg ) { // Anonymous hidden inner class extends an Emp class // Anonymous class define constructor argument Thread obt = new Thread(new Runnable() { @Override public void run() { System.out.println("Runing child Thread."); } }); System.out.println("Runing main Thread."); obt.start(); System.out.println("Runing main Thread."); } }
Ausgabe:
Eine anonyme innere Klasse ist eine innere Klasse, die keinen Klassennamen hat. Es gibt verschiedene Möglichkeiten, eine anonyme innere Klasse zu erstellen, z. B. die Erweiterung der konkreten Klasse, die Erweiterung der abstrakten Klasse und die Implementierung einer Schnittstelle.
Das obige ist der detaillierte Inhalt vonAnonyme innere Klasse in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!