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 ?