多重继承:Java vs C++

cod*_*der 4 c++ java inheritance

最近,在阅读Programming Languages and Practice book 的一些文章后,提到Java 中的多接口继承不会遇到与C++ 中的多类继承相同的问题。

但我不明白为什么会发生这种情况。java如何在C++实现中存在错误时使用多接口继承??

有没有办法替换 C++ 中的多重继承以避免实现问题?

为了让最后一条语句更具体,让我们说我们有:

class A {...};
class B : public A {...};
class C : public A {...};
class D : public B, public C {...};
Run Code Online (Sandbox Code Playgroud)

然后类 D 继承类 B,C,它们都继承类 A。所以如果 A 有一个字段变量,那么 B,C 将具有相同的变量名称,那么 D 将具有什么变量(从 B 或 C 继承)。为了避免这种情况我们可以编写没有多重继承但具有相似结果的上述代码吗?

这个问题不是重复的,因为它不关注示例中的最终继承是什么,而是了解 Java-C++ 多重继承之间的区别(参见上面的第一个问题)以及是否有建议克服的方法一些多重继承问题(如上)。

PM *_*7-1 5

Java的(不像C ++)不允许多重继承状态,因此,不会从遭受钻石的问题

它允许通过接口进行类型的多重继承(一个类可以实现多个接口)。

从 Java 8 开始,还通过接口中的方法实现了行为的多重继承default