java - 多重继承:Java vs C++

原文 标签 java c++ inheritance

最近,在阅读《编程语言和实践》一书中的一些文章之后,有人提到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方法还继承了行为的多重继承。

相关文章:

java - 我是否正确构造了此关键监听器?

java - Spring JpaRepository : delete() with subsequent save() in the same transaction

java - 使用PDFBox 2.0.0签署加密的PDF文档

c++ - 最后在C++的链接列表中添加节点

c++ - Linux中的串行通信异常?

c++ - 示波器算法,动态数据输入,极限输出数据

c++ - 基类VS中的单个 protected 成员变量派生类中的多个私有(private)成员变量

java - 在文件中打印时拆分值

c++ - 有什么理由考虑继承/多态的替代方案?

java - Scala:继承的接口(interface)成员初始化