java8 继承多重接口,接口之间也是继承关系时,执行的是哪个接口的default方法

java8 支持多重继承吗?如何实现

  • 支持,可使用1个接口比如 IServiceSon extends 多个其他的接口,比如 IServiceF IServiceM
  • 再用 实现类ServiceSonImpl implements IServiceSon 即可。
  • 因为java8 的接口中支持 default 方法体,所以其实 IServiceF IServiceM 接口跟class父类是一样了,可以写方法体了。
  • 如此就相当于实现了多继承

多继承优先级问题

总体原则

1)距离近的,关系近的 优先级更高。
2)接口与class 同样距离时,优先继承class。
3) 参考

e.g.

在这里插入图片描述

  • 如果 A1 是 A2 的爹, A2 是 C的爹,所以可以说 A1是 C的爷爷。
  • C 有2个父类,当C 中 @Orverride 父类中的方法时,究竟覆盖的是谁呢?这就是 多重继承需要解决的优先级问题
  • 如果 A1 和 A2 中,都有 default method(),那么,C 中 重写了 该default method()时,究竟执行的是谁的呢?
  • 结论:执行的是 A2的,因为距离更近
  • 虽然 俩父类,但是 毕竟 A1 可以看作是爷爷,关系远一点。。
  • 不推荐上图这种复杂关系,实际开发中,A1和A2 两个相互之间 最好没有关系,避免 A1的特性和方法被 A2 所替代,导致混乱的不可预期的结果。
  • 将Interface3 换成class 实现类,一样的效果
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值