Heim > Java > javaLernprogramm > Hauptteil

Anonyme innere Klasse in Java

WBOY
Freigeben: 2024-08-30 15:58:22
Original
474 Leute haben es durchsucht

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.

  • Klasse
  • Schnittstelle

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 */
}
};
Nach dem Login kopieren

Beispiele für anonyme innere Klassen in Java

Im Folgenden finden Sie die genannten Beispiele:

Beispiel #1

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();      
    } 
} 
Nach dem Login kopieren

Ausgabe:

Anonyme innere Klasse in Java

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.

Beispiel #2

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();      
    } 
}
Nach dem Login kopieren

Ausgabe:

Anonyme innere Klasse in Java

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.

Beispiel #3

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();      
    } 
} 
Nach dem Login kopieren

Ausgabe:

Anonyme innere Klasse in Java

Beispiel #4

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();
        
    } 
}
Nach dem Login kopieren

Ausgabe:

Anonyme innere Klasse in Java

Beispiel #5

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."); 
    }      
    }
Nach dem Login kopieren

Ausgabe:

Anonyme innere Klasse in Java

Fazit

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!

Verwandte Etiketten:
Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage