Quelle est la différence entre une classe interne (inner class) et une classe imbriquée statique (static nested class) en Java ?
Bonjour, collègues ! Je viens de commencer à apprendre Java et je suis tombé sur le sujet des classes imbriquées. Je lis différentes sources, mais je n'arrive pas à saisir clairement la différence entre une inner class (classe interne) et une static nested class (classe imbriquée statique). Les deux sont déclarées à l'intérieur d'une autre classe, mais elles se comportent différemment.
Par exemple, j'ai ce code :
```java
public class Outer {
private String message = "Hello from Outer";
class Inner {
public void print() {
System.out.println(message);
}
}
static class StaticNested {
public void print() {
// Ici, je ne peux pas accéder directement à message
// System.out.println(message); // Erreur de compilation
}
}
}
```
Questions :
1. Pourquoi Inner peut accéder au champ message, mais pas StaticNested ? Pourtant, les deux sont à l'intérieur de Outer.
2. Comment créer correctement des instances de ces classes ? J'ai essayé `new Outer().new Inner()` — cela fonctionne, mais ça semble étrange.
No answers yet.
Connectez-vous pour laisser une réponse