最近,在阅读了“编程语言与实践”一书中的一些文章之后,提到 Java中的多个接口继承不会遇到与C中的多类继承相同的问题. 但我不明白为什么会这样.在C实现错误中,java如何能够使用多
但我不明白为什么会这样.在C实现错误中,java如何能够使用多个接口继承?
有没有办法在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的影响.它允许通过接口进行多重继承(一个类可以实现多个接口).
从Java 8开始,通过接口中的默认方法还存在多个行为继承.