« Programmation Java/Classes internes » : différence entre les versions

→‎Classe interne non statique : formulation, Mef, précision
(→‎Classe interne non statique : formulation, Mef, précision)
Une classe interne non statique peut accéder aux membres statiques de la classe ainsi qu'aux membres de l'objet qui l'a créée. En fait, le compilateur crée un membre supplémentaire dans la classe interne référençant l'objet qui l'a créé.
 
Une telle classe interne peut-être déclarée de manière globale dans l'objet; elle sera accessible par l'ensemble des méthodes de l'objet. Elle peut-être aussi être déclarée de manière locale à une méthode de l'objet. Elle sera alors accessible depuis cette seule méthode.
 
Exemple (Classe non statique globale) :
<source lang="java">
public class ClasseExterne
{
private int compteur = 0;
 
class ClasseInterne
{
private int index = 0;
public ClasseInterne()
{
compteur++;
}
}
}
</source>
Depuis la classe interne, dans le cas où plusieurs variables ou méthodes portent le même nom dans la classe interne et la classe externe, le pointeur <code>this</code> seul désigne l'instance de la classe interne, tandis que le pointeur <code>this</code> précédé du nom de la classe externe désigne l'instance de la classe externe.
<source lang="java">
public class ClasseExterne
{
private int compteur = 10;
 
class ClasseInterne
{
private int compteur = 0;
public void count()
{
this.compteur++; // -> 1
ClasseExterne.this.compteur--; // -> 9
}
}
}
</source>