Middle
Qu'est-ce que les classes imbriquées et comment sont-elles utilisées en programmation?
sobes.tech IA
Réponse de l'IA
Les classes imbriquées sont des classes déclarées à l'intérieur d'une autre classe. Elles permettent de regrouper logiquement des classes utilisées uniquement à un endroit, augmentent l'encapsulation et rendent le code plus lisible.
Les classes imbriquées sont :
- Statiques (Classes imbriquées statiques) : n'ont pas accès aux membres non statiques de la classe externe. Elles peuvent être créées sans instance de la classe externe.
- Non statiques (Classes internes) : ont accès à tous les membres de la classe externe (y compris privés). Pour créer une instance d'une classe interne non statique, une instance de la classe externe est requise.
Applications :
- Cacher l'implémentation : La classe imbriquée peut être utilisée comme une classe auxiliaire, dont les détails d'implémentation ne doivent pas être accessibles de l'extérieur.
- Regroupement : Union logique de classes étroitement liées.
- Implémentation de callbacks / écouteurs : Souvent utilisé pour créer des classes internes anonymes pour implémenter des interfaces ou des classes abstraites.
- Itérateurs : La classe interne est pratique pour implémenter un itérateur, car elle a accès à l'état interne de la collection.
Exemple (Java) :
class OuterClass {
private int outerField;
// Classe imbriquée statique
static class StaticNestedClass {
void print() {
// N'a pas accès à outerField
System.out.println("Depuis StaticNestedClass");
}
}
// Classe interne non statique
class InnerClass {
void print() {
// A accès à outerField
System.out.println("outerField : " + outerField);
}
}
}
// Création d'une instance de la classe imbriquée statique
OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
staticNested.print();
// Création d'une instance de la classe interne
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();