【发布时间】:2023-03-22 03:06:02
【问题描述】:
问题:
我们知道 Java 不允许扩展多个类,因为它会导致 Diamond Problem 编译器无法决定使用哪个超类方法。在Java 8 中引入了接口默认方法钻石问题。也就是说,如果一个类实现了两个接口,每个接口都定义了相同的默认方法,并且实现类没有覆盖公共默认方法,编译器无法决定选择哪个实现。
解决方案:
Java 8 需要为多个接口实现的默认方法提供一个实现。因此,如果一个类同时实现了上面提到的两个接口,它就必须为通用默认方法提供一个实现。否则编译器会抛出编译时错误。
问题:
为什么这个解决方案不适用于多类继承,通过覆盖子类引入的常用方法?
【问题讨论】:
标签: java-8 multiple-inheritance default-method