最近,在阅读《编程语言和实践》一书中的一些文章之后,有人提到Java中的多接口(interface)继承不会遇到与C++中的多类继承相同的问题。
但是我不明白为什么会这样。在C++实现中,java如何能够使用多接口(interface)继承?
有没有一种方法可以替换C++中的多重继承来避免实现问题?
为了使最后一条语句更具体,让我们说:
class A {...};
class B : public A {...};
class C : public A {...};
class D : public B, public C {...};
然后,类D继承了都继承了类A的类B,C。因此,如果A具有字段变量,则B,C将具有相同的变量名,那么D将具有什么变量(从B或C继承)。我们可以编写没有多重继承但结果相似的上述代码吗?
这个问题不是重复的,因为它不关注示例中的最终继承,而是了解Java-C++多重继承之间的区别(请参见上面的第一个问题)以及是否有建议的方法来克服一些多重继承问题(如上述)。
最佳答案
Java(与C++不同)不允许的multiple inheritance状态为,因此不会遭受diamond problem的困扰。
它允许通过接口(interface)对类型进行多重继承(一个类可以实现多个接口(interface))。
从Java 8开始,接口(interface)中的default
方法还继承了行为的多重继承。