Javainheritance

为什么我们不能在java中扩展多个类? 任何人都可以澄清这一点。

这是一个设计决策 – 参见例如, 为什么不是基本原理的多重inheritance 。 简短的理由:MI很复杂,Java不希望变得复杂。

James Gosling / Henry McGilton:

多重inheritance – 以及它产生的所有问题 – 都从Java中丢弃了。 多inheritance的理想特性由接口提供 – 概念上类似于Objective C协议。 接口不是类的定义。 相反,它是一个或多个类将实现的一组方法的定义。 接口的一个重要问题是它们只声明方法和常量。 可能未在接口中定义变量。

换句话说,它消除了歧义问题(“A”inheritance“B”和“C”,“B”和“C”inheritance“D” – 是“A”“D”?)。

在Java中,您应该使用多个接口inheritance,而不是多个类inheritance。 接口描述了对象的行为,并没有歧义。

看看钻石问题

因为java不支持多重inheritance。 这里有一些文章解释了原因

  1. 文章
  2. 文章

简而言之,

这就是我们需要接口的原因。 将接口组合在一起比超重基类更好。

方法名称冲突怎么样,例如当两个超类中存在相同的方法时。