解析java匿名内部类

本文详细介绍了Java 8中匿名内部类的改进,包括其适用范围、创建原理和规则。匿名内部类主要用于方便实现接口,且在Java 8之后,对于被匿名内部类访问的局部变量,不再强制要求使用final修饰,而是采用了'effectivity final'的概念,允许一次性赋值后不可更改。此外,匿名内部类可以继承一个父类或实现一个接口,但不能同时进行,也不能是抽象类,并且拥有一个隐式的无参构造器。
摘要由CSDN通过智能技术生成

Java 8 改进的匿名内部类

适用范围:

匿名内部类适合于方便程序实现接口,即匿名内部类相当于接口的实现类。

创建原理:

创建匿名内部类在实现接口的时候会立即创建一个没有名字类的实例用来实现某一接口,这个类立即创建立即消失,匿名内部类不能重复使用
(匿名内部类中有一个隐式的无参构造器)

定义匿名内部类的格式如下:

new 实现接口 ( ) | 父类构造器 ( 实参列表 )
{
//匿名内部类的实体部分
}

关于匿名内部类还有如下规则:

  1. 从上面定义可以看出,匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或实现一个接口。(相当于匿名内部类继承了一个父类或者实现了一个接口是接口的实现类)
  2. 匿名内部类不能是抽象类,因为系统在创建匿名内部类时,会立即创建匿名内部类的对象。因此不允许将匿名内部类定义成抽象类(抽象类不能实例化)
  3. 匿名内部类不能定义构造器。由于匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以定义初始化块,可以通过实例初始化块来完成构造器需要完成的事情。

最常见的创建匿名内部类的方式是需要创建某个接口类型的对象,如下程序所示:

//定义一个产品的接口
interface Product{
    double getPrice(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值