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。 这里有一些文章解释了原因
- 文章
- 文章
简而言之,
这就是我们需要接口的原因。 将接口组合在一起比超重基类更好。
方法名称冲突怎么样,例如当两个超类中存在相同的方法时。