为什么 Java 不支持类多重继承?
作者:Yujiaao https://segmentfault.com/a/1190000019962661 我发现这个问题很难回答,因为答案可能不会让面试官满意,在大多数情况下,面试官正在寻找答案中的关键点,如果你提到这些关键点,面试官会很高兴。 在 Java 中回答这种棘手问题的关键是准备好相关主题, 以应对后续的各种可能的问题。 这是非常经典的问题,与 为什么 String 在 Java 中是不可变 的很类似; 这两个问题之间的相似之处在于它们主要是由 Java 创作者的设计决策使然。 为什么 Java 不支持类多重继承, 可以考虑以下两点: 1、 第一个原因围绕钻石💎形继承问题产生的歧义 考虑一个类 A 有 foo() 方法, 然后 B 和 C 派生自 A, 并且有自己的 foo() 实现,现在 D 类使用多个继承派生自 B 和 C。 如果我们只引用 foo(), 编译器将无法决定它应该调用哪个 foo(),这也称为 Diamond 问题,因为这个继承方案的结构类似于菱形,见下图: A foo() / \ / \ foo() B C foo() \ / \ / D foo() 即使我们删除钻石的顶部 A 类并允许多重继承,我们也将看到这个问题含糊性的一面。如果你把这个理由告诉面试官,他会问为什么 C++ 可以支持多重继承而 Java不行。 嗯,在这种情况下