从Java Tutorial人中:
嵌套类分为两类:静态类和非静态类.声明为静态的嵌套类称为静态嵌套类.非静态嵌套类称为内部类.
静电嵌套类使用包含的类名进行访问:
OuterClass.StaticNestedClass
例如,要为静态嵌套类创建对象,请使用以下语法:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
作为内部类实例的对象存在于外部类的实例中.考虑下面的类:
class OuterClass {
...
class InnerClass {
...
}
}
InnerClass的实例只能存在于OuterClass的实例中,并且可以直接访问其封闭实例的方法和字段.
要实例化内部类,必须首先实例化外部类.然后,使用以下语法在外部对象中创建内部对象:
OuterClass outerObject = new OuterClass()
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
请参阅:Java Tutorial - Nested Classes
为了完整起见,请注意还有一个inner class without an enclosing instance:
class A {
int t() { return 1; }
static A a = new A() { int t() { return 2; } };
}
在这里,new A() { ... }
是一个inner class defined in a static context,没有封闭的实例.