Java不允许多重继承,但它允许实现多个接口.为什么?
问题:
我们知道Java不允许扩展多个类,因为它会导致Diamond问题,编译器无法决定使用哪个超类方法.使用接口默认方法,Diamond问题在Java 8中引入.也就是说,因为如果一个类实现两个接口,每个接口定义相同的默认方法,并且实现类不会覆盖常见的默认方法,则编译器无法决定选择哪个实现.
解:
Java 8需要提供由多个接口实现的默认方法的实现.因此,如果一个类实现上面提到的两个接口,它将不得不为常见的默认方法提供一个实现.否则编译器会抛出编译时错误.
题:
通过重写子类引入的常用方法,为什么此解决方案不适用于多类继承?