« Programmation Java/Classes internes » : différence entre les versions
Contenu supprimé Contenu ajouté
m Révocation des modifications de 194.153.88.133 (discussion) vers la dernière version de JackPotte Balises : Révocation SWViewer [1.3] |
Aucun résumé des modifications |
||
Ligne 7 :
Une classe interne statique ne peut accéder qu'aux membres statiques de sa classe contenante, représentée par ''ClassExterne'' dans l'exemple suivant :
<
▲ {
{
}
}
</syntaxhighlight>
La compilation du fichier <code>ClasseExterne.java</code> produit deux fichiers compilés :
* <code>ClasseExterne.class</code> contient la classe <code>ClasseExterne</code> uniquement
Ligne 34 :
Exemple (Classe non statique globale) :
<
public class ClasseExterne
{
{
{
}
}
}
</syntaxhighlight>
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.
<
public class ClasseExterne
{
{
{
}
}
}
</syntaxhighlight>
== Classe anonyme ==
Une classe peut être déclarée au moment de l'instanciation de sa classe parente.
On parle alors de classe anonyme. Exemple : <
public class ClasseExterne
{ {
if ((annee%4==0 && annee%100!=0) || annee%400==0) {▼
{
else
return false;
}
};
long an = Long.parseLong(args[0]);▼
{
if (b.evaluer(an)) {▼
System.out.println("L'année entrée est bissextile");▼
else
}
}
</syntaxhighlight>
La classe Bissextile est ici la classe mère d'une classe anonyme. Cette classe sera automatiquement nommée par le compilateur <code>ClasseExterne$1</code>. Il convient d'observer le point-virgule qui suit l'accolade fermante de sa déclaration.
|