Java >> Tutoriel Java >  >> Tag >> class

Classe interne Java | Classe imbriquée Java | Types | Anonyme, Statique, Local

La définition d'une classe dans une autre classe s'appelle une classe interne Java ou classe Java imbriquée . Une classe interne peut être le modificateur d'accès par défaut, public, protégé ou privé. Mais pour la classe externe, ce n'est que public ou par défaut. Le constructeur de classe interne Java est appelé avec un nouvel objet de la classe interne créée.

Dans ce didacticiel, vous découvrirez une classe interne et des types Java imbriqués, ainsi que la manière de créer et d'accéder à tous les types d'exemples.

Syntaxe

Il s'agit de la syntaxe de base de la classe interne imbriquée. Où une classe est le "OuterClassName" externe et l'autre est l'intérieur est "InnerClassName" ou une classe imbriquée.

class OuterClassName {
   class InnerClassName {
   }
}

Types de classes internes en Java

Il existe 4 types de classes internes imbriquées en Java :

  • Une classe interne imbriquée (classe imbriquée non statique)
  • Classe interne anonyme (classe imbriquée non statique)
  • Classe interne locale de la méthode (classe imbriquée non statique)
  • Classes imbriquées statiques

Nous découvrirons également une interface imbriquée en Java.

Exemple de classe interne imbriquée Java

Voici un exemple de définition de la classe interne Nested. Une classe interne peut accéder aux variables et instances de classe externe pour tous les types de modificateurs d'accès.

Regardez ci-dessous des exemples de classes internes Java (programme/code). Comment le créer et accéder à la classe interne.

class OuterClass {

    // Nested inner class
    private class InnerClass {
        public void printMsg() {
            System.out.println("This is a Nested inner class");
        }
    }

    // Accessing  inner class from the method within
    void display_Inner() {
        InnerClass inner = new InnerClass();
        inner.printMsg();
    }
}

public class MyClass {

    public static void main(String args[]) {
        // Creating object of Outer Class
        OuterClass outer = new OuterClass();

        // Accessing the method.
        outer.display_Inner();
    }
}

Sortie : Il s'agit d'une classe interne imbriquée

Classes internes anonymes

Une classe sans nom est appelée la classe interne anonyme en Java. Il est utilisé si vous devez remplacer la méthode de la classe ou de l'interface. Il y a 2 façons de définir la classe interne d'Anonymous.

  1. Classe (peut être abstraite ou concrète).
  2. Interface

Voyons l'exemple Comment créer une classe interne Java anonyme à l'aide de la classe. Pour l'interface, nous publierons un didacticiel détaillé séparé.

abstract class AnonymousInner {
    public abstract void myMethod();
}

class OuterClasses {

    public static void main(String args[]) {
        AnonymousInner inner = new AnonymousInner() {
            public void myMethod() {
                System.out.println("Anonymous inner class Examples");
            }
        };
        inner.myMethod();
    }
}

Sortie : Exemples de classes internes anonymes

Classes imbriquées statiques

La classe statique interne de Java ou la classe imbriquée statique n'est logiquement et techniquement pas une classe interne car l'ajout d'un mot-clé statique dans une classe représente un membre de la classe externe. Il ne peut pas accéder aux membres de données et aux méthodes non statiques.

Une classe statique est accessible par le nom de classe externe.

Regardé ci-dessous un exemple de classe statique interne Java. Il est très facile de créer une classe statique juste pour utiliser un "mot-clé statique ” avant le cours.

class OuterClass {

    // static Nested inner class
    static class InnerClass {
        public void printMsg() {
            System.out.println("This is a Static Nested inner class");
        }
    }
}

public class MyClass {

    public static void main(String args[]) {
        // Creating object of Outer Class
        OuterClass.InnerClass outerIn = new OuterClass.InnerClass();

        // Accessing the method.
        outerIn.printMsg();
    }
}

Sortie : Il s'agit d'une classe interne imbriquée statique

Méthode Classes internes locales

Vous savez que nous pouvons écrire un programme Java où une classe dans une méthode. Ce type de classe s'appelle une classe interne locale Methods. Comme pour les variables locales et les champs dans les méthodes, la classe interne locale limite la portée uniquement dans une méthode.

class LocalInner {

    private int number = 977;//instance variable

    void display() {
        class Local {
            void msg() {
                System.out.println("Local number " + number);
            }
        }
        Local l = new Local();
        l.msg();
    }

    public static void main(String args[]) {
        //creating object
        LocalInner localInner = new LocalInner();
        localInner.display();
    }

}

Sortie : Numéro local 977

Interface imbriquée en Java

Voici donc la dernière partie de ce chapitre, Interface imbriquée.

L'interface déclarée dans une autre interface ou classe est appelée interface imbriquée. Il doit être référencé par l'interface ou la classe externe. L'interface imbriquée n'est pas accessible directement.

interface MyInterface {
    void show();

    interface Message {
        void msg();
    }
}

class NestedInterface implements MyInterface.Message {
    public void msg() {
        System.out.println("Java Nested interface Example");
    }

    public static void main(String args[]) {
        MyInterface.Message message = new NestedInterface();
        message.msg();
    }
}

Sortie : Exemple d'interface Java imbriquée

Utilisation de la classe interne en Java

Voici quelques bénéfices/avantages de l'utilisation d'une classe interne imbriquée en Java :

  1. Les classes imbriquées (classe interne) peuvent accéder à tous les membres (membres de données et méthodes) de la classe externe, y compris private.
  2. Les classes internes imbriquées sont utilisées pour développer un code plus lisible et maintenable, car elles regroupent logiquement les classes et les interfaces en un seul endroit.
  3. Optimisation du code :il nécessite moins de code à écrire.

Question :Qu'est-ce qu'une classe interne locale ou une classe locale en Java ?

Réponse : A Méthode Classes internes locales est appelée une classe interne locale, comme ci-dessus, vérifiez cet exemple.

Question :Existe-t-il un constructeur associé aux classes imbriquées ?

Réponse : Le constructeur de la classe Inner n'est appelé que lorsque vous en avez créé un objet.

MyOuter.MyInner inClass = outClass.new MyInner();

Le constructeur de classe imbriqué n'invoque pas tant que vous n'avez pas créé d'objet. Même les blocs statiques sont exécutés, mais les blocs d'instance et les constructeurs ne sont pas invoqués.

Faites des commentaires si vous avez des doutes et des suggestions sur ce tutoriel.


Balise Java