Avatar ·

Quelle est la différence entre une classe interne (inner class) et une classe imbriquée statique (static nested class) en Java ?

Bonjour à tous ! J'ai commencé à apprendre Java et je me suis perdu dans le sujet des classes imbriquées. J'ai lu la documentation Oracle, mais elle est trop sèche. Il y a deux types : inner class (classe interne) et static nested class (classe imbriquée statique). J'ai écrit un petit exemple, mais je ne comprends pas pourquoi le code fonctionne différemment. Voici mon code : ```java public class OuterClass { private String outerField = "champ externe"; // Classe interne class InnerClass { void display() { System.out.println("Inner: " + outerField); } } // Classe imbriquée statique static class StaticNestedClass { void display() { // Erreur ! Ne voit pas outerField // System.out.println("StaticNested: " + outerField); } } } ``` Questions : 1. Pourquoi `StaticNestedClass` ne peut-il pas accéder à `outerField` sans créer une instance de la classe externe, alors que `InnerClass` le peut ? 2. Quand faut-il utiliser `static` pour une classe imbriquée, et quand ne pas le faire ?