内部类
概念:在一个类中再定义一个类。
特点:
1.会生成独立的.class文件
2.内部类可以直接访问外部类的私有属性,不会破会封装。
3.为外部类提供必要的功能组件
内部类分类:
一个java类中可以有多个class类,但是只能有一个public class类
成员内部类
静态内部类
局部内部类
匿名内部类
成员内部类
概念:在类的内部定义,与实例变量、实例方法同级别。(背)
特点:
1.不能定义静态成员
2.创建内部类对象,必须先创建外部类对象,因为成员内部类是外部类的一个组成部分,基于外部类对象存在
3.当外部类和成员内部类属性重名,优先访问内部类属性
静态内部类
概念:与静态成员同级别,不依靠外部类对象,可直接通过类名调用静态成员,还可以直接创建对象访问静态内部类的实例成员。
特点:
可直接访问外部类的静态成员,不能直接访问非静态成员。
局部内部类
概念:和局部变量同级别,定义在外部类的方法中。
特点:
1.局部内部类的作用范围和创建对象只限于当前方法。
2.局部内部类不能访问当前方法的局部变量,因为二者声命周期不一致,必须加final,让变量成为常量,扩大声 明周期范围。
3.限制类的使用范围。
匿名内部类
概念:此类没有类名,其他特征和局部内部类完全一致。
使用匿名内部类的前提:
必须继承一个父类,或者实现一个接口。
特点:
将定义类、类的实现、创建对象合为一体。
优点:减少代码
缺点:可读性差