JAVA8接口实现方法_JAVA8新特性:接口也可以写实现方法

在日常开发中可能很多人对JAVA8的一些新特性不太关注:

有一个新特性看似不起眼,一旦用到了则会觉得非常的方便;

很多人都觉得接口接口里面只能写抽象方法,不能写实现方法;

实际上在JAVA8更新后,接口就可以添加默认方法和静态方法:默认方法用default修饰符修饰,会被其他接口继承;而静态方法使用static修饰符修饰;

非常典型的就是java.util.Map,有兴趣的可以去瞧一瞧;

为什么要有接口默认方法?

举一个很现实的例子:

我们的接口老早就写好了,后面因为各种业务问题,避免不了要修改接口。

在 Java 8 之前,比如要在一个接口中添加一个抽象方法,那所有的接口实现类都要去实现这个方法,不然就会编译错误,而某些实现类根本就不需要实现这个方法也被迫要写一个空实现,改动会非常大。

所以,接口默认方法就是为了解决这个问题,只要在一个接口添加了一个默认方法,所有的实现类就自动继承,不需要改动任何实现类,也不会影响业务,爽歪歪。

另外,接口默认方法可以被接口实现类重写。

为什么要有接口静态方法?

接口静态方法和默认方法类似,只是接口静态方法不可以被接口实现类重写。

接口静态方法只可以直接通过静态方法所在的接口名.静态方法名来调用。

注意点

在接口多继承的情况下,被继承的接口如果存在相同的默认方法,是会引起编译报错的,如果在继承接口类中不重写此默认方法是会报错的;

如果需要调用父类的方法可以通过 被继承类的类名.super.默认方法名 的形式调用父类默认方法;

有一种情况下例外:就是多继承的接口有相同的默认方法,也就是其中一个接口重写了父类的默认方法,这种情况下不需要重写默认方法;

默认方法与接口抽象方法定义相同:默认方法会优先于接口抽象方法,接口定义的方法会被忽略;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值