Les classes internes statiques peuvent accéder à l'ensemble des membres statiques de leur classe parente, à l'instar des méthodes de classe.
class ClasseParente { static int x = 10; static int y = 12; // La classe interne statique ne // peut accèder à cette variable int z = x + y; static int addition(){ return (x + y); } // La classe interne statique ne // peut accèder à cette méthode int resultat(){ return (z); } static class ClasseInterne { ClasseInterne(){ if((x + y)== addition()) System.out.println("La classe interne a bien accédé aux " + "membres statiques de sa classe parente."); } } public static void main(String[] args){ new ClasseInterne(); } }
Il n'est pas nécessaire de créer une instance de la classe parente pour pouvoir instancier la classe intérieure statique contrairement aux classes internes simples.
Il est possible de créer une instance d'une classe interne par l'instruction suivante :
new ClasseParente.ClasseInterne()
Le mot-clé this n'est pas utilisable dans le contexte des classes internes statiques, et partant, celles-ci n'ont pas accès aux variables et méthodes non-statiques de leur classe d'inclusion.
Les méthodes d'une classe interne statique peuvent être accédées dans la classe parente de la même façon que les classes internes simples, c'est-à-dire, suite à l'instanciation de leur propre classe.
class ClasseParente { static int x = 10; static int y = 12; static int addition(){ return (x + y); } static class ClasseInterne { void verification(){ if((x + y)== addition()) System.out.println("La classe interne a bien accédé aux " + "membres statiques de sa classe parente."); } } public static void main(String[] args){ ClasseInterne obj_in = new ClasseInterne(); obj_in.verification(); } }