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

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 49 :
}
</syntaxhighlight>
 
=== Référence aux membres de la classe englobante ===
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.
<syntaxhighlight lang="java">
Ligne 63 ⟶ 65 :
ClasseExterne.this.compteur--; // -> 9
}
}
}
</syntaxhighlight>
 
=== Instanciation ===
Les méthodes non-statiques de la classe englobante peuvent instancier la classe interne directement :
<syntaxhighlight lang="java">
public class ClasseExterne
{
class ClasseInterne
{
// ...
}
 
public void action()
{
ClasseInterne obj = new ClasseInterne();
// ...
}
}
</syntaxhighlight>
 
Tandis qu'une méthode statique (pas d'instance <code>this</code> de la classe externe) ou une méthode définie dans une autre classe doit utiliser une instance de la classe externe pour préfixer l'opérateur <code>new</code> :
 
<syntaxhighlight lang="java">
public class ClasseExterne
{
class ClasseInterne
{
// ...
}
 
public static void main(String[] args)
{
ClasseExterne ext = new ClasseExterne();
ClasseInterne obj = ext.new ClasseInterne();
// ...
}
}