方法引用是否不明确与多重继承相同



相关问题:对valueOf的引用不明确

这种情况与为什么我们只能扩展一个类的背景是否相同,因为如果我们可以扩展两个类,对于所有静态字段等,命名可能会导致同样的问题?

来自维基:

在诸如"钻石问题"之类的情况下,它增加了复杂性和模糊性,如果不止一个父类实现了所述特征,则特定特征从哪个父类继承可能是模糊的

关于问题中链接的具体问题,我认为答案是

最初的问题是,当试图在同一Java类中导入Float.valueOf()和Integer.valueOf)时,valueOf()的静态导入会发生冲突。

但这种冲突与多重继承无关。重点是:如果你在它们的"封闭"类的上下文中考虑这些方法,它们当然是"不同的"。但当这种语境被"去除"后,它们就再也无法区分了。

换句话说:静态导入方法时不涉及"多重继承"。只需将静态导入视为定义某种"别名定义"的机制即可。你不能用"同一个"别名来表示两个不同的东西。

静态方法在多重继承方面没有引入新的/不同的问题。如果有什么不同的话,它们稍微不那么复杂,因为它们不是多态的。

不,钻石问题远不止于此。

的确,多重继承会导致需要解决的名称冲突。通过添加上下文可以很容易地做到这一点,例如默认方法如何处理这种情况。你的问题和这个很相似。

但钻石问题还有一个更有趣的部分:从两条不同路线上的共同祖先那里继承的字段(而不是方法)会发生什么?这就是允许整体多重继承的语言需要回答的问题。(他们用各种方式来做。)

最新更新