Accéder au contenu principal
Documents
Tableaux JavaProgrammation orientée objet en JavaTraitement des fichiers en JavaIntroduction To JavaLes bases du langage JavaMots-clés Java

Classes internes de Java

Les classes internes Java sont des classes définies à l'intérieur d'une autre classe. Ils sont utilisés pour regrouper logiquement les classes qui ne sont utilisées qu'à un seul endroit, pour augmenter l'encapsulation et pour rendre le code plus lisible et plus facile à maintenir. Les classes internes peuvent accéder aux membres (y compris les membres privés) de la classe externe.

Types de classes internes

  1. Classe imbriquée non statique (classe intérieure): Associé à une instance de la classe extérieure.
  2. Classe statique imbriquée: N'est pas associé à une instance de la classe extérieure et ne peut accéder qu'aux membres statiques de la classe extérieure.
  3. Classe intérieure locale: Défini dans un bloc, généralement une méthode.
  4. Classe intérieure anonyme: Une classe sans nom, utilisée pour instancier des objets avec certaines fonctionnalités "à la volée".

Exemples

Exemple 1 : Classe intérieure non statique

public class OuterClass {
    private String message = "Hello from Outer Class";

    class InnerClass {
        void display() {
            System.out.println(message);
        }
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        OuterClass.InnerClass inner = outer.new InnerClass();
        inner.display();
    }
}

Dans cet exemple, InnerClass est une classe interne non statique. Il peut accéder au champ message de OuterClass. Une instance de InnerClass est créée à partir d'une instance de OuterClass.

Exemple 2 : Classe statique imbriquée

public class OuterClass {
    private static String message = "Hello from Static Nested Class";

    static class StaticNestedClass {
        void display() {
            System.out.println(message);
        }
    }

    public static void main(String[] args) {
        OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass();
        nested.display();
    }
}

Ici, StaticNestedClass est une classe statique imbriquée. Il peut accéder directement aux membres statiques de OuterClass. Aucune instance de OuterClass n'est nécessaire pour créer une instance de StaticNestedClass.

Exemple 3 : Classe interne anonyme

public class OuterClass {
    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("Running from Anonymous Inner Class");
            }
        };
        new Thread(runnable).start();
    }
}

Cet exemple présente une classe interne anonyme mettant en œuvre l'interface Runnable. Il est utilisé pour fournir une implémentation spécifique de la méthode run à la volée.

Conseils et bonnes pratiques

  • Utilisez-le avec parcimonie: Les classes internes peuvent rendre le code plus difficile à lire si elles sont utilisées à l'excès. Utilisez-les lorsqu'ils appartiennent logiquement à la classe extérieure.
  • Classes anonymes: Idéal pour la mise en œuvre d'interfaces ou de classes abstraites avec un petit nombre de fonctionnalités.
  • Accès aux membres: Les classes internes peuvent accéder à tous les membres de la classe externe, y compris les membres privés, ce qui les rend utiles pour l'encapsulation.
  • Classes statiques imbriquées: A utiliser lorsque la classe imbriquée n'a pas besoin d'accéder aux membres de l'instance de la classe externe.
  • Évitez la complexité: Gardez les classes internes simples pour éviter d'augmenter la complexité de la classe externe.

Apprendre l'essentiel de Java

Développez vos compétences en Java à partir de la base et maîtrisez les concepts de programmation.
Commencez à apprendre gratuitement