可以通过虚拟支持多重继承
Is possible to support multiple inheritance through virtual?
我知道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 中,没有菱形问题,因为您永远无法扩展两个类;只有一个类和许多接口。
你组合了太多的问题。我建议您将帖子拆分为单独的问题。
- 关于C++中具有多重继承"this"指针的说明
- C++中模板化异常类的多重继承
- 虚拟继承中是否存在多重继承?
- 如何在 c++ 多重继承中调用父非虚函数?
- 多重继承相同的方法名,没有歧义
- 使用enable_if解决多重继承歧义
- 多重继承导致虚假的模糊虚拟函数过载
- 多重继承和访问不明确的元素
- C++ 多重继承:使用基类 A 的实现实现基类 B 的抽象方法
- 多重继承中的派生类的行为类似于聚合
- 为什么我的 Hippomock 期望在使用多重继承时失败
- 带有此指针的模板类多重继承构造函数不起作用?
- 使用多重继承时出现编译错误
- 增强多重继承的序列化
- 多重继承:跳过'virtual'关键字并拒绝菱形层次结构的使用?
- 仅函数的多重继承 - 没有虚拟和 CRTP
- C++多重继承和鸭子类型
- C++两次从文件保存对象读取多重继承
- 从多重继承中的派生类函数调用适当的父类函数
- 可以通过虚拟支持多重继承