9.3 Classe interne
Cliquez içi pour plus de vidéos disponibles sur notre chaine youtube !Une classe interne (inner class) est une classe définie à l'intérieur d'une autre classe. La classe qui la contient est appelée classe externe. C'est un peu le principe des boucles imbriquées, appliqué aux classes.
Pourquoi utiliser une classe interne
On déclare une classe à l'intérieur d'une autre lorsque cette classe n'a de sens que dans un contexte limité. Les classes internes présentent plusieurs avantages :
- elles regroupent logiquement des classes étroitement liées ;
- elles peuvent accéder aux membres (même privés) de la classe externe ;
- elles sont particulièrement pratiques pour les listeners et la gestion d'événements.
Déclaration
La syntaxe consiste simplement à écrire une classe dans le corps d'une autre :
public class ClasseExterne {
private int valeur = 10;
class ClasseInterne {
public void afficher() {
// acces direct au champ prive de la classe externe
System.out.println("Valeur : " + valeur);
}
}
}
Pour créer une instance d'une classe interne non statique, il faut d'abord une instance de la classe externe :
ClasseExterne externe = new ClasseExterne();
ClasseExterne.ClasseInterne interne = externe.new ClasseInterne();
interne.afficher();
Les classes internes sont un outil d'organisation : elles gardent ensemble du code qui ne servirait nulle part ailleurs. Dans les sections suivantes, vous verrez aussi les classes internes statiques et les classes anonymes, très utilisées pour gérer les événements d'interface.