可以通过虚拟支持多重继承

Is possible to support multiple inheritance through virtual?

本文关键字:多重继承 支持 虚拟 可以通过      更新时间:2023-10-16

我知道Java没有任何支持多重继承的能力。例如,类 C 从类 A 和类 B 继承所有属性,然后编译器会混淆应该调用哪个方法,哪个方法在 A 和 B 中定义。因此,C++支持多重继承,而Java不支持。

我知道通过使用接口可以在Java中实现这种多重继承。

我的疑问是,钻石问题是什么,如何在Java中解决?

例如,考虑多个类,如 A、B、C、D。B 类和 C 类从类 A 继承属性,D 类继承类 B 和类 C 的属性。这被称为"钻石问题"。

我们如何在Java中解决这个钻石问题,这个钻石问题什么时候会出现在编码中?

我还提到,C++通过使用虚拟可以实现这种多重继承概念。而且,Java是为简单而构建和设计的!

虚拟在C++的实际含义是什么,如何在Java中使用?是否可以通过虚拟实现多重继承?

我是Java初学者,对这种问题感到非常抱歉。但是,我相信可以从我的错误中吸取教训!

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

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

Java的设计者认为,多重继承实际上有用的情况非常少,以至于不值得包含在语言中。 在大约 15 年的 Java 编程生涯中,我只遇到过一次业务问题,C++式多重继承会很有用。 所以我很高兴地说他们是对的。

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

public class MyClass implements interface1, interface2, interface3{
  // provide a definition to the abstract methods of interface
}  

C++中的"菱形"问题是当一个类继承自两个类时,这两个类都有来自共同祖父的方法。在 Java 中,没有菱形问题,因为您永远无法扩展两个类;只有一个类和许多接口。

你组合了太多的问题。我建议您将帖子拆分为单独的问题。