Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples

Classe imbriquée statique Java

Découvrez comment fonctionnent les classes imbriquées statiques de Java, comment elles diffèrent des classes internes, et quand les utiliser avec des exemples de code pratiques.

En Java, une classe peut être définie à l'intérieur d'une autre classe. Ce sont ce qu'on appelle des classes imbriquées et elles se présentent sous deux formes :

Alors que les classes internes étaient couvertes dans notre tutoriel précédent, cet article se concentre sur les classes imbriquées statiques.


Classe imbriquée statique Java

Pour déclarer une classe imbriquée comme statique, il suffit de préfixer le mot-clé static :

class Animal { static class Mammal { // membres statiques et non-statiques de Mammal } // membres de Animal } 

Note : Seules les classes imbriquées peuvent être déclarées statiques ; les classes de niveau supérieur ne le peuvent pas.

Comme toute classe, une classe imbriquée statique peut contenir à la fois des membres statiques et d'instance.

Parce qu'elle est un membre statique de sa classe externe, vous pouvez accéder à une classe imbriquée statique sans créer d'instance de la classe externe.


Exemple : Classe imbriquée statique

class Animal { // classe interne class Reptile { public void displayInfo() { System.out.println("I am a reptile."); } } // classe imbriquée statique static class Mammal { public void displayInfo() { System.out.println("I am a mammal."); } } } class Main { public static void main(String[] args) { // créer instance de classe externe Animal animal = new Animal(); // créer instance de classe interne non-statique Animal.Reptile reptile = animal.new Reptile(); reptile.displayInfo(); // créer instance de classe imbriquée statique Animal.Mammal mammal = new Animal.Mammal(); mammal.displayInfo(); } } 

Sortie

I am a reptile. I am a mammal. 

Dans le code ci-dessus, Mammal est une classe imbriquée statique tandis que Reptile est une classe interne.

Remarquez la syntaxe d'instanciation différente :


Accès aux membres de la classe externe

Parce qu'une classe imbriquée statique est associée à sa classe externe, elle ne peut accéder qu'aux membres statiques de la classe externe. Les tentatives de référencer des membres d'instance entraîneront une erreur de compilation.

Exemple : Tentative d'appel d'une méthode non-statique

class Animal { static class Mammal { public void displayInfo() { System.out.println("I am a mammal."); } } class Reptile { public void displayInfo() { System.out.println("I am a reptile."); } } public void eat() { System.out.println("I eat food."); } } class Main { public static void main(String[] args) { Animal animal = new Animal(); Animal.Reptile reptile = animal.new Reptile(); reptile.displayInfo(); Animal.Mammal mammal = new Animal.Mammal(); mammal.displayInfo(); mammal.eat(); // ❌ Erreur de compilation } } 

Sortie

Main.java:28: error: cannot find symbol mammal.eat(); ^ symbol: method eat() location: variable mammal of type Mammal 1 error compiler exit status 1 

L'erreur survient car mammal est une instance d'une classe imbriquée statique et ne peut pas invoquer la méthode non-statique eat() de Animal.


Classe de niveau supérieur statique ?

Java interdit les classes de niveau supérieur statiques. Seules les classes imbriquées peuvent être déclarées statiques. Le code suivant démontre l'erreur du compilateur :

static class Animal { public static void displayInfo() { System.out.println("I am an animal"); } } class Main { public static void main(String[] args) { Animal.displayInfo(); } } 

Sortie

Main.java:1: error: modifier static not allowed here static class Animal { ^ 1 error compiler exit status 1 

Cela confirme que seules les classes imbriquées peuvent être statiques.

Java

  1. Mot-clé Static C# : Maîtriser les variables, méthodes et classes statiques
  2. Comprendre les classes imbriquées C# : Définition, utilisation et héritage
  3. Comprendre le mot-clé final en Java : variables, méthodes et classes
  4. L'opérateur instanceof en Java : guide complet
  5. Maîtriser les classes imbriquées et internes en Java : types, exemples et bonnes pratiques
  6. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  7. Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
  8. Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
  9. Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques