默认方法

1. 为什么要用默认方法

默认方法的主要目标用户是类库的设计者,如List接口增加了stream方法,在没有默认方法之前,像guava和apache这样对List接口封装的库,不得不要实现stream方法。而有了默认方法,就不用了。

2.抽象类和抽象接口的区别

它们不都能包含抽象方法和包含方法体的实现吗?

  • 一个类只能继承一个抽象类,但是一个类可以实现多个接口
  • 一个抽象类可以通过实例变量(字段)保存一个通用状态,而接口是不能有实例变
    量的

3.解决冲突的规则

如果一个类使用相同的函数签名从多个地方(比如另一个类或接口)继承了方法,通过三条
规则可以进行判断。

  • 类中的方法优先级最高。类或父类中声明的方法的优先级高于任何声明为默认方法的优
    先级。
  • 如果无法依据第一条进行判断,那么子接口的优先级更高:函数签名相同时,优先选择
    拥有最具体实现的默认方法的接口,即如果B继承了A,那么B就比A更加具体。
  • 最后,如果还是无法判断,继承了多个接口的类必须通过显式覆盖和调用期望的方法,显式地选择使用哪一个默认方法的实现。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值