Vous êtes sur la page 1sur 15

Les Classes Internes

en Java

2ème Année BIS


Mme Hadhémi Achour
ISG de Tunis
1. Classe Interne ?
❖Classe Interne (Inner Class / Nested Class) : classe
définie dans une autre classe (dite englobante /
principale).
❖ Avantages:
➢ Accès direct à tous les membres de la classe englobante.
➢ Groupement de classes (lisibilité, maintenance)
➢ Moins de code à écrire

❖ Différents types de Classes Internes:


➢Classe Interne Locale
➢ Classe Interne Anonyme
➢Classe Interne Membre d’une Classe
➢Classe Interne Statique Membre d’une Classe
2
2. Classes Internes Locales

Définies à l’intérieur d’une méthode.


Ont accès à tous les membres de la classe englobante (y
compris private).
Ont accès aux variables locales final de la méthode où elles
sont définies.

Ne peuvent être ni private, ni public, ni protected.


Ne peuvent pas être utilisées à l’extérieur de la méthode
(bloc) où elles sont définies.

3
2. Classes Internes Locales

4
3. Classe Interne Anonyme
❖ Classe locale qui n’a pas de nom.
❖ Obligatoirement définie comme:
➢ Sous-classe d’une autre classe,
➢ Ou, classe implémentant une interface.
❖ Définie et instanciée à l’aide de:
X obj = new X () {
// corps de la classe anonyme, définie ici comme
// sous-classe de X
};

ou
I obj = new I () {
// corps de la classe anonyme, définie ici comme
// une classe qui implémente l’interface I
}; 5
3. Classe Interne Anonyme

6
3. Classe Interne Anonyme

7
3. Classe Interne Anonyme

❖ Peut accéder à tous les membres de la classe englobante (y


compris private).
❖ Peut accéder aux variables locales final de la méthode où
elle est définie.
❖ Est instanciable 1 seule fois.
❖ Est réservée à des cas très particuliers où la définition de la
classe anonyme reste brève
➔ Exemples: la définition de classes écouteurs
d’évènements dans les GUI.

8
7.3. Classe Interne Anonyme

9
7.3. Classe Interne Anonyme

10
7.3. Classe Interne Anonyme

11
4. Classe Interne Membre d’une Classe
❖ Définie en tant que membre d’une classe.
❖ Peut accéder aux membres privés de la classe englobante.
❖ Peut être déclarée avec private, protected, public.
❖ Est associée à une instance de la classe englobante:
NomClasseEnglobante.NomClasseInterne ObjI
= ObjE.new NomClasseInterne ();

❖ Peut être utilisée à l’intérieur de la classe englobante:


NomClasseInterne ObjI = new NomClasseInterne ();

12
4. Classe Interne Membre d’une Classe

13
4. Classe Interne Membre d’une Classe

14
5. Classe Interne Membre Statique

❖ Classe statique (static) définie en tant que membre d’une


classe.
❖ Ne peut accéder qu’aux membres statiques de la classe
englobante (même privés).
❖ Peut être instanciée, même si aucune instance de la classe
englobante n’est créée:
NomClasseEnglobante.NomClasseInterne ObjI =
new NomClasseEnglobante.NomClasseInterne ();

15