java8新特性[4]:接口的默认方法

1.默认方法的定义和作用

在JDK8之前,接口不能定义任何实现。这意味着在Java8以前的版本中,由接口定义的方法是抽象的,不包括方法体。JDK8版本的发布改变了这一点,其中给接口添加了一个新的功能:默认方法。默认方法允许为接口方法定义默认实现。也就是说,通过使用默认方法,现在可以为接口方法提供方法体,使其不再是抽象方法。

默认方法的主要作用是,在不破坏现有代码的情况下,提供一种扩展接口的方式。回想一下,由接口定义的所有方法必须有实现。在过去,如果添加一个新方法到一个活跃的、广泛使用的接口,就会破坏现有的代码,因为该方法没有具体的实现,而现在默认方法解决了该问题。因此,默认方法的出现不会破坏现有的代码。

默认方法的另一个作用是让接口中的定义的方法,变成是可选的。以前的时候,即使接口的方法不需要,实现类也得有一个空的实现。

需要注意:默认方法仅适用于专用功能。接口仍主要用于指定要做什么,而并不说明如何去做。接口仍然不能通过自身来创建实例,而必须由类来实现。不过,包含默认方法可以带来更多的灵活性。


总之,默认方法主要有以下两大优点:
在不破坏现有代码的情况下,能够合理地增强接口的功能。
在无需类提供占位符实现的情况下,提供了-一种可选的功能。

2.默认方法的多继承问题

第一种情况:InterfaceA和InterfaceB两个并行接口,DefaultMethod同时实现InterfaceA和InterfaceB接口,则DefaultMethod必须重定义默认方法才可以使用。

3、在接口中使用静态方法

JDK 8还向接口添加了另一个新功能:定义一个或多个static方法的能力。与类中的static方法一样,接口定义的static方法可以由任何对象单独调用。因此,要调用static方法,接口的实现不是必需的,接口的实例也不是必需的。但对static方法的调用是通过指定接口名称,后跟一个句点和方法名称来实现的。调用static 方法的一般形式如下:

Inter faceName.staticMethodName

注意,这种调用方式与调用类中static 方法的方式类似

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值