- 什么是内部类
- 将一个类的定义放在另一个类的内部,这就是内部类,原来的类称为外部类
- 分类(根据定义的位置与方式)
- 成员内部类:定义在类的内部
- 局部内部类:定义在一个方法或一个作用域里,相当于一个局部变量
- 匿名内部类:在需要实例化内部类的地方定义它(通常在方法体内,或参数中)
- 静态内部类:定义在类的内部,在类的前面多一个关键字static
- 内部类的作用
- 每个内部类都能独立的继承一个(接口的)实现,与外部类没关系
- 接口只解决了部分问题,而内部类的存在使得Java的多继承机制变得更加完善(允许继承多个非接口类型[类或抽象类)
- 图示
- 如何使用内部类
-
成员内部类
- 定义语法:同java的类
- 说明
-
内部类可访问外部类的所有属性和方法
-
内部类中访问的成员与外部类成员名称相同时的访问方式
- 默认访问的是内部类成员
- 使用:外部类名.this.成员(变量/方法)来访问外部类成员
- 图解
-
内部类拥有更多的访问权限
- 外部类只有:public和默认的访问权限(包的访问权限)
- 内部类其实是外部类的成员所以额外拥有:private,public的访问权限
- 图解
-
外部类如何访问内部类中成员
- 创建内部类实例,然后通过实例来访问内部类成员
-
-
局部内部类
- 定义语法:同java的类
- 说明
- 不能有public,protected,private,static修饰符
- 图解
-
匿名内部类
- 定义语法
new 外部类名(){
匿名内部类代码
}; - 说明
-
注意点
-
用在方法中
-
用在参数中(监听效果时可用此编码风格)
-
- 定义语法
-
静态内部类
- 定义语法:static class 类名{}
- 说明
- 静态内部类可直接创建实例
- 对静态内部类成员的访问不再需要外部类,用它直接创建对象即可
- 静态内部类可访问外部类的静态成员
- 图解
- 静态内部类可直接创建实例
-
- 内部类在那些地方用
- 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏
- 方便编写事件驱动程序
- 方便编写线程代码
- 关于内部类的笔试题
- 题1
- 内容
- 分析
- 答案
- 内容
- 题2
- 题3
- 1和2的写法正确吗?有区别吗?说出原因
- 1和2的写法正确吗?有区别吗?说出原因
- 题1