我知道Java没有任何能力支持多重继承。例如,C类继承了A类和B类的所有属性,然后编译器混淆了在A和B中应该调用哪个方法,因此,C++支持多重继承,而Java不支持。
我知道通过使用Interface可以在Java中实现这种多重继承。
我怀疑的是,什么是钻石问题,以及如何在Java中解决?
例如,考虑多个类,如A、B、C、D等,B类和C类继承A类的属性,D类继承B类和C类的属性,这称为“钻石问题”。
我们如何在Java中解决这个钻石问题?在编码过程中,这个钻石问题何时才会出现?
我还提到,在C++中通过使用虚拟可以实现这种多重继承的概念。而且,Java是为简单而构建和设计的!
虚拟在C++中的实际意义是什么,如何在Java中使用?是否有可能通过虚拟实现多重继承?
我是Java初学者,对于这个问题我很抱歉。但是,我相信这可以从我的错误中吸取教训!
发布于 2013-11-15 07:34:14
Java中没有多重继承的概念。实现多个接口是可能的,但这不是多重继承。
因为没有多重继承,所以在具有多重继承的语言中出现的“菱形问题”在Java中不会出现。所以在Java中没有virtual关键字--不需要它。
Java的设计者认为,在实际有用的情况下,多重继承的数量太少了,因此不值得包括在语言中。在大约15年的Java编程中,我只遇到过一次业务问题,在这个问题中,C++风格的多重继承是有用的。所以我很高兴地说他们是对的。
发布于 2013-11-15 07:25:28
如果您想要多个“继承”,则需要实现多个interfaces。每个接口都声明实现类需要为其提供定义的抽象方法。
public class MyClass implements interface1, interface2, interface3{
// provide a definition to the abstract methods of interface
} C++中的“菱形”问题是当一个类从两个类继承时,两个类都有来自共同的父级的方法。在Java中,没有钻石问题,因为您可以永远不会扩展两个类:一个类和多个接口。
你的问题太多了。我建议你把你的帖子分成不同的问题。
https://stackoverflow.com/questions/19995646
复制相似问题