定义:把类定义在其他类的内部,这个类就被称为内部类。
访问特点:内部类可以直接访问外部类的成员,包括私有;外部类要访问内部类的成员,必须创建对象
两种类型:成员内部类(看作外部类成员),局部内部类
访问方式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;(非静态内部类访问)
外部类名.内部类名 对象名 = new 外部类名.内部类名(); (静态成员内部类访问之一)
外部类名.内部类名.静态方法名;(静态成员内部类访问之二)
成员内部类修饰符:private(保护数据安全) static(方便数据访问)
注意:一个静态成员内部类中可以声明static成员,也可是非静态成员,静态成员内部类不可以使用外部类的非静态成员。在非静态内部类中不可以声明静态成员(类比非静态方法中不能声明静态变量,静态方法也不能:原因静态方法里的变量是临时变量,只在静态方法里有效。而声明static示该变量属于类。所以不能声明为static)。静态成员内部类访问的外部类数据必须用静态修饰。
特殊调用:通过外部类名限定this对象(Outer.this.外部类成员变量)
局部内部类:在局部位置,可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能,就是调用局部内部类的方法。
注意:局部内部类是不能有public,protected,private,static修饰符修饰class。局部内部类访问局部变量必须用final修饰。