Maison  >  Article  >  Java  >  Résumé et partage de classes internes anonymes en Java

Résumé et partage de classes internes anonymes en Java

黄舟
黄舟original
2017-09-25 10:16:541543parcourir

Cet article présente principalement les informations pertinentes sur le résumé des classes internes anonymes en Java. J'espère que cet article pourra aider tout le monde. Les amis dans le besoin peuvent se référer à

Résumé des classes internes anonymes en Java.

Les classes internes anonymes sont également des classes internes sans nom

Parce qu'elles n'ont pas de nom, les classes internes anonymes ne peuvent être utilisées qu'une seule fois. Elles sont généralement utilisées pour simplifier l'écriture de code

.

Mais il y a une condition préalable à l'utilisation de classes internes anonymes : vous devez hériter d'une classe parent ou implémenter une interface

Exemple 1 : Ne pas utiliser de classes internes anonymes pour implémenter des méthodes abstraites


abstract class Person { 
  public abstract void eat(); 
} 
  
class Child extends Person { 
  public void eat() { 
    System.out.println("eat something"); 
  } 
} 
  
public class Demo { 
  public static void main(String[] args) { 
    Person p = new Child(); 
    p.eat(); 
  } 
}

Résultat d'exécution : manger quelque chose

Comme vous pouvez le voir, nous utilisons Child pour hériter de la classe Person , puis implémentez Child Une instance de , convertissez-la en une référence à la classe Person

Cependant, si la classe Child ici n'est utilisée qu'une seule fois, ne serait-il pas difficile de l'écrire en tant que classe indépendante ?

À cette époque, des classes internes anonymes ont été introduites

Exemple 2 : Implémentation de base de classes internes anonymes


 public abstract void eat(); 
} 
  
public class Demo { 
  public static void main(String[] args) { 
    Person p = new Person() { 
      public void eat() { 
        System.out.println("eat something"); 
      } 
    }; 
    p.eat(); 
  } 
}

Résultat d'exécution : manger quelque chose

Comme vous pouvez le voir, nous avons directement implémenté la méthode dans la classe abstraite Personne entre accolades

pour qu'on puisse en omettre un Écriture de classe

De plus, les classes internes anonymes peuvent également être utilisées sur les interfaces

Exemple 3 : Utiliser des classes internes anonymes sur les interfaces


interface Person { 
  public void eat(); 
} 
  
public class Demo { 
  public static void main(String[] args) { 
    Person p = new Person() { 
      public void eat() { 
        System.out.println("eat something"); 
      } 
    }; 
    p.eat(); 
  } 
}

Résultat d'exécution : manger quelque chose

Comme le montre l'exemple ci-dessus, tant qu'une classe est abstraite ou une interface, alors les méthodes dans ses sous-classes peuvent être implémentées à l'aide de classes internes anonymes

La situation la plus courante est dans l'implémentation du multi-threading, car pour implémenter le multi-threading, vous devez hériter de la classe Thread ou de l'interface Runnable

Exemple 4 : Implémentation d'une classe interne anonyme de la classe Thread


public class Demo { 
  public static void main(String[] args) { 
    Thread t = new Thread() { 
      public void run() { 
        for (int i = 1; i <= 5; i++) { 
          System.out.print(i + " "); 
        } 
      } 
    }; 
    t.start(); 
  } 
}

Résultat d'exécution : 1 2 3 4 5

Exemple 5 : Implémentation de classe interne anonyme de l'interface Runnable


public class Demo { 
  public static void main(String[] args) { 
    Runnable r = new Runnable() { 
      public void run() { 
        for (int i = 1; i <= 5; i++) { 
          System.out.print(i + " "); 
        } 
      } 
    }; 
    Thread t = new Thread(r); 
    t.start(); 
  } 
}

Résultat d'exécution : 1 2 3 4 5

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