首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以通过虚拟方式支持多重继承?

是否可以通过虚拟方式支持多重继承?
EN

Stack Overflow用户
提问于 2013-11-15 07:23:49
回答 2查看 659关注 0票数 1

我知道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初学者,对于这个问题我很抱歉。但是,我相信这可以从我的错误中吸取教训!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-15 07:34:14

Java中没有多重继承的概念。实现多个接口是可能的,但这不是多重继承。

因为没有多重继承,所以在具有多重继承的语言中出现的“菱形问题”在Java中不会出现。所以在Java中没有virtual关键字--不需要它。

Java的设计者认为,在实际有用的情况下,多重继承的数量太少了,因此不值得包括在语言中。在大约15年的Java编程中,我只遇到过一次业务问题,在这个问题中,C++风格的多重继承是有用的。所以我很高兴地说他们是对的。

票数 1
EN

Stack Overflow用户

发布于 2013-11-15 07:25:28

如果您想要多个“继承”,则需要实现多个interfaces。每个接口都声明实现类需要为其提供定义的抽象方法。

代码语言:javascript
复制
public class MyClass implements interface1, interface2, interface3{
  // provide a definition to the abstract methods of interface
}  

C++中的“菱形”问题是当一个类从两个类继承时,两个类都有来自共同的父级的方法。在Java中,没有钻石问题,因为您可以永远不会扩展两个类:一个类和多个接口。

你的问题太多了。我建议你把你的帖子分成不同的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19995646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档