Junior
Qu'est-ce que les classes imbriquées?
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 se divisent en deux types principaux : classes imbriquées statiques (membres statiques de la classe) et classes internes (membres non statiques).
Classes imbriquées statiques :
- Associées à la classe externe, pas à son instance.
- Peuvent accéder uniquement aux membres statiques de la classe externe.
- Peuvent être créées sans instance de la classe externe.
Classes internes :
- Associées à une instance de la classe externe.
- Peuvent accéder à tous les membres de la classe externe (statiques et non statiques), y compris privés.
- Nécessitent une instance de la classe externe pour leur création.
Exemples d’utilisation :
- Regroupement : Les classes logiquement liées peuvent être regroupées pour améliorer la lisibilité et l’organisation du code.
- Encapsulation : Les classes internes ont accès aux membres privés de la classe externe, permettant d’encapsuler les détails de l’implémentation.
- Écouteurs d’événements (Java) : Souvent utilisés pour créer des classes internes anonymes.
- Classes auxiliaires : Petites classes utilisées uniquement par la classe externe.
// Exemple de classe imbriquée statique
class OuterClass {
static int outerStaticField = 1;
int outerInstanceField = 2;
static class StaticNestedClass {
void display() {
System.out.println("Champ statique externe : " + outerStaticField);
// Impossible d’accéder directement à outerInstanceField
}
}
}
// Exemple de classe interne
class AnotherOuterClass {
int outerField = 10;
class InnerClass {
void display() {
System.out.println("Champ externe : " + outerField); // Accès au champ de la classe externe
}
}
}
Tableau comparatif :
| Caractéristique | Classe imbriquée statique | Classe interne |
|---|---|---|
| Relation | Avec la classe externe | Avec une instance de la classe externe |
| Accès aux membres externes | Seulement statiques | Tous les membres (y compris privés) |
| Nécessite une instance | Non | Oui |
| Peut contenir des membres statiques | Oui | Non (sauf constantes) |