Sobes.tech
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)