1

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

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

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

例如,考虑多个类,例如 A、B、C、D。B 类和 C 类继承了 A 类的属性,D 类继承了 B 类和 C 类的属性。这称为“钻石问题” .

我们如何在 Java 中解决这个 Diamond 问题,这个 Diamond 问题什么时候可能在编码中准确出现?

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

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

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

4

2 回答 2

1

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

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

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

于 2013-11-15T07:34:14.570 回答
0

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

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

C++ 中的“钻石”问题是当一个类继承自两个类时,这两个类都具有来自共同祖父母的方法。在 Java 中,不存在菱形问题,因为你永远不能扩展两个类;只有一个类和许多接口。

你结合了太多的问题。我建议您将帖子分成单独的问题。

于 2013-11-15T07:25:28.993 回答