Maison  >  Article  >  Java  >  Classe interne anonyme en Java

Classe interne anonyme en Java

WBOY
WBOYoriginal
2024-08-30 15:58:22453parcourir

La classe interne anonyme en Java est une classe interne ou une classe imbriquée. Une classe interne est une classe présente à l’intérieur d’une classe externe. Une classe interne anonyme est donc une classe interne qui n’a pas de nom. Il s'agit soit d'une sous-classe d'une classe, soit d'une implémentation d'une interface. Ainsi, si nous devons remplacer une classe ou une méthode d’interface, nous pouvons utiliser une classe interne anonyme. Dans le cas de la classe interne anonyme, une accolade est suivie du point-virgule.

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Il existe deux façons de créer une classe interne anonyme.

  • Classe
  • Interface

Syntaxe :

Vous trouverez ci-dessous la syntaxe, où la classe peut être une classe abstraite ou une classe ou une interface concrète.

class t = new class()
{
// class variables and methods members
public void class_method()
{
/* some code of the class_method */
}
};

Exemples de classe interne anonyme en Java

Vous trouverez ci-dessous les exemples mentionnés :

Exemple n°1

Un exemple où nous créons une interface et une classe simple qui implémente cette interface.

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

Sortie :

Classe interne anonyme en Java

Comme dans le code ci-dessus, une interface Emp est créée avec la méthode geteid() et eid=2101. ImplClass implémente une interface Emp et fournit la définition de la méthode geteid(). Il n’est pas nécessaire d’écrire une classe ImplClass distincte ; au lieu de cela, il peut être utilisé comme classe interne anonyme.

Exemple n°2

Ici, nous réécrivons le code Java ci-dessus pour voir une classe interne fonctionner. La classe ImplClass est accessible aux autres classes de l'application. Cependant, la fonctionnalité de la classe ImplClass n’est pas requise par l’autre classe de l’application. Nous n’avons donc pas besoin de définir une classe externe. De plus, une instance de cette classe n’est utilisée qu’une seule fois. Par conséquent, avec l’aide d’une classe interne anonyme, les fonctionnalités de la classe ImplClass peuvent être implémentées. Dans l'exemple ci-dessous, nous avons créé l'objet de la classe directement en implémentant Empinterfece.

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

Sortie :

Classe interne anonyme en Java

Comme dans le code ci-dessus, un objet de Emp n'est pas créé ; implicitement, un objet de la classe ImplClass (peut ne pas avoir le même nom) est créé. Notez que la classe interne n'a pas de nom, donc le compilateur décide d'un nom et le crée, en implémentant l'interface Emp.

Exemple #3

Code Java pour créer une classe interne anonyme qui étend une classe.

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

Sortie :

Classe interne anonyme en Java

Exemple n°4

Code Java pour créer une classe interne anonyme qui étend une classe abstraite.

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

Sortie :

Classe interne anonyme en Java

Exemple #5

Code Java pour créer une classe interne anonyme qui définit un constructeur interne ou un argument de méthode où nous utiliserons la classe Thread prédéfinie et l'interface exécutable pour créer et exécuter un thread.

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."); 
    }      
    }

Sortie :

Classe interne anonyme en Java

Conclusion

Une classe interne anonyme est une classe interne qui n'a pas de nom de classe. Il existe différentes manières de créer une classe interne anonyme, comme étendre la classe concrète, étendre la classe abstraite et implémenter une interface.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Prédicat JavaArticle suivant:Prédicat Java