Avatar ·

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.