Classe interne Java (classe imbriquée)

Classes internes Java
En Java, il est également possible d’imbriquer des classes (une classe dans une classe). Le but des classes imbriquées est de regrouper des classes qui vont ensemble, ce qui rend votre code plus lisible et maintenable.
Pour accéder à la classe interne, créez un objet de la classe externe, puis créez un objet de la classe interne :
Exemple
class OuterClass {
int x = 10;
class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.y + myOuter.x);
}
}
// Outputs 15 (5 + 10)
Essayez-le vous-même »
Classe intérieure privée
Contrairement à une classe “normale”, une classe interne peut être private
ou protected
. Si vous ne voulez pas que les objets extérieurs accèdent à la classe interne, déclarez la classe comme private
:
Exemple
class OuterClass {
int x = 10;
private class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.y + myOuter.x);
}
}
Si vous tentez d’accéder à une classe interne privée depuis une classe externe, une erreur se produit :
Main.java:13: error: OuterClass.InnerClass has private access in OuterClass
OuterClass.InnerClass myInner = myOuter.new InnerClass();
^
Essayez-le vous-même »
Classe interne statique
Une classe interne peut également être static
ce qui signifie que vous pouvez y accéder sans créer d’objet de la classe externe :
Exemple
class OuterClass {
int x = 10;
static class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass.InnerClass myInner = new OuterClass.InnerClass();
System.out.println(myInner.y);
}
}
// Outputs 5
Essayez-le vous-même »
Note: juste comme static
attributs et méthodes, un static
la classe interne n’a pas accès aux membres de la classe externe.
Accéder à la classe externe à partir de la classe interne
L’un des avantages des classes internes est qu’elles peuvent accéder aux attributs et aux méthodes de la classe externe :
Exemple
class OuterClass {
int x = 10;
class InnerClass {
public int myInnerMethod() {
return x;
}
}
}
public class Main {
public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.myInnerMethod());
}
}
// Outputs 10
Essayez-le vous-même »
#Classe #interne #Java #classe #imbriquée