我知道Java没有任何支持多重继承的能力。例如,类C继承了A类和B类的所有属性,然后编译器会混淆应调用哪个方法,该方法在A和B中定义。因此,C ++支持多个继承,Java不支持。
我知道通过使用Interface可以在Java中实现这种多重继承。
我怀疑的是,钻石问题以及如何用Java解决这个问题?
例如,考虑多个类,如A,B,C,D。类B和类C继承类A的属性,类D继承类B和类C的属性。这称为“钻石问题“。
我们如何在Java中解决这个Diamond问题?这个Diamond问题何时可能恰好出现在编码中?
我还提到在C ++中使用Virtual可以实现这种多重继承的概念。而且,Java是为简单而构建和设计的!
在C ++中Virtual的实际含义是什么?如何在Java中使用?是否可以通过虚拟实现多重继承?
我是Java初学者,非常抱歉这个问题。但是,我相信可以从我的错误中吸取教训!
答案 0 :(得分:1)
Java中没有多重继承的概念。可以实现多个接口,但这是不多重继承。
因为没有多重继承,所以做的语言中出现的“菱形问题”在Java中不会出现。所以Java中没有virtual
关键字 - 不需要它。
Java的设计者认为,多重继承实际上有用的案例数量非常少,以至于不值得在语言中包含。在Java编程的大约15年中,我只有一次遇到了一个业务问题,其中C ++风格的多重继承会很有用。所以我很高兴地说他们是对的。
答案 1 :(得分:0)
如果您想要多个“继承”,则需要实现多个interfaces
。每个接口声明实现类需要为其提供定义的抽象方法。
public class MyClass implements interface1, interface2, interface3{
// provide a definition to the abstract methods of interface
}
C ++中的'钻石'问题是当一个类继承自两个类时,这两个类都有来自普通祖父的方法。在Java中,没有钻石问题,因为你可以从不扩展两个类;只有一个类和许多接口。
你结合了太多问题。我建议您将帖子分成不同的问题。