最近看了《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/