java8 支持多重继承吗?如何实现
- 支持,可使用1个接口比如
IServiceSonextends多个其他的接口,比如IServiceFIServiceM - 再用 实现类
ServiceSonImplimplements IServiceSon即可。 - 因为java8 的接口中支持
default方法体,所以其实IServiceFIServiceM接口跟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 实现类,一样的效果
本文探讨了Java8如何通过接口实现多重继承,并详细解释了接口默认方法带来的多继承优先级规则。在Java中,由于类不支持多重继承,但可以通过接口实现。当一个类实现多个包含相同默认方法的接口时,优先执行距离最近的接口中的方法。作者建议避免创建复杂的接口继承关系,以防止可能出现的混乱和不可预期的结果。
579

被折叠的 条评论
为什么被折叠?



