在其他構造中定義的類

在另一個類中定義

C++

巢狀類 [ref] (需要引用封閉類)

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

      private:
         Outer*  outer;
   };
};

Java

[非靜態]巢狀類(又名內部類或成員類)

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

在另一類中靜態定義

C++

靜態巢狀類

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

Java

靜態巢狀類(又名靜態成員類) [參考]

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

在方法中定義

(例如事件處理)

C++

本地類 [參考]

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

Java

本地類 [參考]

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