一、内部类作用:便于访问外部类的私有信息
二、内部类分类
1、成员内部类
1)可以访问外部类的一切内容
2)不能声明 静态属性、静态方法
3)如果外部类和内部类有重名的成员内容,访问需要用:类名.this.
4)如果外部类和内部类有重名的静态内容,访问需用:类名.
5)创建成员内部类
外部类名.内部类名 名字 = new 外部类名().new 内部类()
2、静态内部类
1)只能访问外部类的静态信息
2)可以声明一切
3)如果外部类与内部类有重名的静态内容
6)创建静态内部类对象
外部类名.内部类名 名字 = new 外部类名.new 内部类名()
3、方法内部类
如下图所示
注意:
1)方法内部类是局部的,没有静态的,没有public等修饰符
2)方法局部变量、形参不能访问,只能访问 final修饰的最终变量
4、方法内部的匿名内部类
方法的内部类 ,如果仅使用一次 ,省略类名,创建时借助父类或者接口。
例1:使用父类(Object)创建匿名类
例2:使用接口普创建匿名类
内部类就是在一个类的内部定义的类,内部类中不能定义静态成员.
在方法体外面定义的内部类的访问类型可以是public,protecte,默认的,private等4种类型,这就好像
类中定义的成员变量有4种访问类型一样,它们决定这个内部类的定义对其他类是否可见; 对于这种
情况,我们也可以在外面创建内部类的实例对象,创建内部类的实例对象时,一定要先创建外部类的实
例对象,然后用这个外部类的实例对象去创建内部类的实例对象,代码如下:
Outer outer = new Outer();
Outer.Inner1 inner1 = outer.new Innner1();
内部类与外部类有重名的成员,在内部类中用 外部类名字.this.属性名字 访问外部类的属性
Static Nested Class,它不再具有内部类的特性,Static Nested Class,它不再具有内部类的特性。只能访问外部类的静态属性