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

标签 java c++ inheritance

最近看了《Programming Languages and Practice》一书中的一些文章,提到Java中的多接口(interface)继承不会像C++中的多类继承一样遇到同样的问题。

但我不明白为什么会这样。 Java 如何能够在 C++ 实现错误存在的情况下使用多接口(interface)继承??

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

为了更具体地说明最后一个陈述,假设我们有:

class A {...};
class B : public A {...};
class C : public A {...};
class D : public B, public C {...};

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

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

最佳答案

Java(不像 C++)不允许 multiple inheritance state,因此不会遭受 diamond problem 的困扰.

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

从 Java 8 开始,行为也通过接口(interface)中的default 方法进行多重继承。

关于java - 多重继承 :Java vs C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39400343/

相关文章:

java - 将 Excel 转换为 JSON

java - 使用此正则表达式拆分字符串 : [\\dc]+

c++ - 凯撒密码 : how to calculate with shifting value > 10 ( or larger )?

java - 二叉树,在前序遍历中返回下一个节点

java - 我的代码不能正常工作? IF 语句多个类

c++ - Objective-C变量布局

c++ - 适用于 iOS 和 Android 的 C++ 文件操作

c# - 接口(interface)继承 - 好事?

java - 使用继承时使用类的实际类型

java - 继承的 try-catch 问题 (Java)