Sobes.tech
Junior — Middle

Quelle est la différence entre une classe interne et une classe imbriquée en programmation?

sobes.tech IA

Réponse de l'IA

En Java (et dans Android) une classe imbriquée est toute classe déclarée à l’intérieur d’une autre classe. Les classes imbriquées sont de deux types :

  1. Classe imbriquée statique (static nested class) — déclarée avec le modificateur static. Elle n’a pas accès directement aux membres non statiques de la classe extérieure.
  2. Classe interne (inner class) — classe imbriquée sans le modificateur static. Elle est liée à une instance de la classe extérieure et a accès à ses champs et méthodes non statiques.

Exemple :

class Outer {
    private int outerField = 10;

    static class StaticNested {
        void print() {
            // Impossible d’accéder directement à outerField
            System.out.println("Classe imbriquée statique");
        }
    }

    class Inner {
        void print() {
            // Peut accéder à outerField
            System.out.println("Classe interne, outerField = " + outerField);
        }
    }
}

Ainsi, la principale différence est que la classe interne est liée à un objet de la classe extérieure et peut accéder à ses membres non statiques, tandis que la classe imbriquée statique ne peut pas.