Java Tutorial

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 staticce 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

Related Articles

Check Also
Close
Back to top button