Java -- 内部类

原文:http://www.cnblogs.com/dolphin0520/p/3811445.html

@、分类:

成员内部类、局部内部类、匿名内部类和静态内部类。

@、成员内部类:

1、不可包含static变量和方法,但是可以有static final 变量,但是此变量必须被初始化一个常量或常量表达式,即编译时就有确定的值。

2、依赖于外部类的实例对象,因此创建内部类对象时需要先创建外部类对象,再 外部类对象.new 内部类 来实例化内部类。

3、可以直接访问外部类成员。(原因:编译后内部类实际是一个单独的类文件,它的成员变量中包含了一个外部类实例对象)。

4、外部类不可直接访问内部类的成员,需要通过内部类的实例对象进行访问。

@、局部内部类、匿名内部类访问的局部变量必须定义为final,保证数据的一致性。(原因:编译后,局部变量实际是通过类的构造函数传入的,为了保证类的方法不对局部变量进行改变,所以定义为final)。

@、静态内部类:不依赖于外部类实例对象,直接实例化:new 外部类.内部类。

原文地址:https://www.cnblogs.com/yarightok/p/5807916.html