|
Notes sur les classes membres
Qu'est qu'une classe membre ?
|
Une classe membre est une classe dont la definition est contenue dans une autre
classe.
Fichier test.java |
public class test
{
public static void main (String[] atgv)
{
Englobeur en = new Englobeur(10);
System.out.println(" ");
en.m1.Info();
System.out.println(" ");
en.m2.Info();
System.out.println(" ");
en.m1.i1.Info();
System.out.println(" ");
en.m2.i2.Info();
}
}
class Englobeur
{
int numero_sup;
Membre_1 m1;
Membre_2 m2;
Englobeur(int v)
{
numero_sup = v;
System.out.println("Creation [Emglobeur] numero "+ numero_sup);
m1 = new Membre_1(v+1);
m2 = new Membre_2(v+2);
}
class Membre_1
{
int numero_inf_1;
Invite_1 i1;
Membre_1(int v)
{
numero_inf_1 = v;
System.out.println("Creation [Membre] numero "+ numero_inf_1);
i1 = new Invite_1(v+1);
}
void Info()
{
System.out.println("[Membre_1] : "+ numero_inf_1);
System.out.println("[Membre_2] : "+ m2.numero_inf_2);
System.out.println("[Englobeur] : "+ numero_sup);
}
class Invite_1
{
int invite_1;
Invite_1(int v)
{
invite_1 = v;
System.out.println(">> [Invite_1] : "+ invite_1);
}
void Info()
{
System.out.println("[Membre_1] : "+ numero_inf_1);
System.out.println("[Membre_2] : "+ m2.numero_inf_2);
System.out.println("[Englobeur] : "+ numero_sup);
System.out.println("[Invite_1] : "+ invite_1);
System.out.println("[Invite_2] : "+ m2.i2.invite_2);
}
}
}
class Membre_2
{
int numero_inf_2;
Invite_2 i2;
Membre_2(int v)
{
numero_inf_2 = v;
System.out.println("Creation [Membre] numero "+ numero_inf_2);
i2 = new Invite_2(v+1);
}
void Info()
{
System.out.println("[Membre_1] : "+ m1.numero_inf_1);
System.out.println("[Membre_2] : "+ numero_inf_2);
System.out.println("[Englobeur] : "+ numero_sup);
}
class Invite_2
{
int invite_2;
Invite_2(int v)
{
invite_2 = v;
System.out.println(">> [Invite_2] : "+ invite_2);
}
void Info()
{
System.out.println("[Membre_1] : "+ m1.numero_inf_1);
System.out.println("[Membre_2] : "+ numero_inf_2);
System.out.println("[Englobeur] : "+ numero_sup);
System.out.println("[Invite_2] : "+ invite_2);
System.out.println("[Invite_1] : "+ m1.i1.invite_1);
}
}
}
}
|
A l'execution on obtient l'affichage suivant:
Creation [Emglobeur] numero 10
Creation [Membre] numero 11
>> [Invite_1] : 12
Creation [Membre] numero 12
>> [Invite_2] : 13
[Membre_1] : 11
[Membre_2] : 12
[Englobeur] : 10
[Membre_1] : 11
[Membre_2] : 12
[Englobeur] : 10
[Membre_1] : 11
[Membre_2] : 12
[Englobeur] : 10
[Invite_1] : 12
[Invite_2] : 13
[Membre_1] : 11
[Membre_2] : 12
[Englobeur] : 10
[Invite_2] : 13
[Invite_1] : 12
|
Note: remarquer les noms des classes generes par la compilation de ce programme.
- test.class
- Englobeur.class
- Englobeur$Membre_1.class
- Englobeur$Membre_2.class
- Englobeur$Membre_1$Invite_1.class
- Englobeur$Membre_2$Invite_2.class
|
Instanciation d'une classe membre
|
L'exemple suivant montre comment instancier une classe membre.
Fichier test.java |
public class test
{
public static void main (String[] atgv)
{
System.out.println(">> \"classe\".");
classe cl = new classe();
System.out.println(">> \"interieur\".");
classe.interieur in = cl.new interieur();
}
}
class classe
{
classe()
{
System.out.println("Creation d'une instance de classe \"classe\".");
}
class interieur
{
interieur()
{
System.out.println("Creation d'une instance de classe \"interieur\".");
}
}
}
|
A l'execution on obtient l'affichage suivant:
C:\programmes\java>java test
>> "classe".
Creation d'une instance de classe "classe".
>> "interieur".
Creation d'une instance de classe "interieur"
|
|