嵌套类:
Java语言支持嵌套类,即在类内定义另一个类。
嵌套类有两种类型,静态和非静态。静态类用Static修饰,非静态嵌套类称为内部类。
嵌套类是其外部类的成员,非静态嵌套类可以访问外部类的其他成员,而静态嵌套类则不能。
作为OutClass的成员,嵌套类可以申明为Public,private,protected,包级私有等,而外部类只能申明为Public和包级私有。
静态嵌套类:
与类的静态方法一样,静态嵌套类不能直接引用外部类定义的实例变量和方法,只能使用对象引用间接访问。(静态)
如,要创建静态嵌套类的对象,需要使用下述语法:
OterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
非静态嵌套类(内部类):
与实例化方法和实例变量一样,内部类也与外部类的实例相关联,它可以直接访问对象的方法和字段,因为内部类与实例相关联,所以内部类本身不能定义任何静态成员。
要实例化内部类,必须首先实例化外部类,然后利用外部对象创建内部对象:
OutClass.InnerClass innerObject = outObject.new InnerClass();
另外,还有两种特殊的内部类,一种叫局部内部类,它在方法体内申明;另一种叫匿名内部类;也在方法体内申明,但不申明其名称。高级Java编程中会用到这些类。