Java Language Classes définies dans d'autres constructions


Exemple

Défini dans une autre classe

C ++

Classe imbriquée [ref] (nécessite une référence à la classe englobante)

class Outer {
   class Inner {
      public:
         Inner(Outer* o) :outer(o) {}

      private:
         Outer*  outer;
   };
};

Java

[non statique] classe imbriquée (alias classe interne ou classe de membre)

class OuterClass {
    ...
    class InnerClass {
        ...
    }
}

Définie statiquement dans une autre classe

C ++

Classe imbriquée statique

class Outer {
   class Inner {
      ...
   };
};

Java

Classe imbriquée statique (aka Classe de membre statique) [ref]

class OuterClass {
    ...
    static class StaticNestedClass {
        ...
    }
}

Défini dans une méthode

(par exemple, gestion d'événements)

C ++

Classe locale [ref]

void fun() {
   class Test {
      /* members of Test class */
   };
}

Java

Classe locale [ref]

class Test {
    void f() {
        new Thread(new Runnable() {
            public void run() {
                doSomethingBackgroundish();
            }
        }).start();
    }
}