匿名内部类(详解)
匿名内部类没有名字,创建的格式如下:
new 父类构造函数(参数列表)| 实现接口 {
// 匿名内部类的类体部分
}
缺陷: 匿名内部类不能重复使用,只能被使用一次:创建匿名内部类时会立即创建一个该类的实例,该类的定义会立即消失。
注意事项
- 使匿名内部类时,必须继承一个类或者实现一个接口,但是两者不可兼得,只能继承一个类或者实现一个接口
- 匿名内部类中不能定义构造函数
- 匿名内部类不能存在任何的静态成员变量和静态方法
- 匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效
- 匿名内部类不能是抽象的,必须要实现继承的类或者实现的接口的所有抽象方法
使用形参必须为final
给匿名内部类传递参数时,若该形参在内部类中需要被使用 时,那么该参数必须要为final。也就是说,当所在的方法的形参需要被内部类里面使用时,该形参必须为final(保持参数的一致性)。
匿名内部类的初始化
程序中一般都是利用构造函数完成某个实例的初始化工作,但是匿名内部类没有构造函数,使用构造代码块完成匿名内部类的初始化工作。
多重继承
多重继承,指的是一个类可以同时从多于一个的父类那里继承行为和特征,但是Java中为了保证数据安全,只允许单继承。但是Java提供了两种方式曲折实现多继承:
- 接口
- 内部类