Java 8 改进的匿名内部类
适用范围:
匿名内部类适合于方便程序实现接口,即匿名内部类相当于接口的实现类。
创建原理:
创建匿名内部类在实现接口的时候会立即创建一个没有名字类的实例用来实现某一接口,这个类立即创建立即消失,匿名内部类不能重复使用
(匿名内部类中有一个隐式的无参构造器)
定义匿名内部类的格式如下:
new 实现接口 ( ) | 父类构造器 ( 实参列表 )
{
//匿名内部类的实体部分
}
关于匿名内部类还有如下规则:
- 从上面定义可以看出,匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或实现一个接口。(相当于匿名内部类继承了一个父类或者实现了一个接口是接口的实现类)
- 匿名内部类不能是抽象类,因为系统在创建匿名内部类时,会立即创建匿名内部类的对象。因此不允许将匿名内部类定义成抽象类(抽象类不能实例化)
- 匿名内部类不能定义构造器。由于匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以定义初始化块,可以通过实例初始化块来完成构造器需要完成的事情。
最常见的创建匿名内部类的方式是需要创建某个接口类型的对象,如下程序所示:
//定义一个产品的接口
interface Product{
double getPrice(