【发布时间】:2011-04-15 15:33:56
【问题描述】:
可能重复:
Why there is no multiple inheritance in Java, but implementing multiple interfaces is allowed
大家好,我是java新手,当我尝试在java中使用多重继承概念时,它显示编译时错误。为什么java不支持它。我听说过接口关键字但是 不知道为什么java直接支持它。请帮我解释一下。
【问题讨论】:
标签: java
可能重复:
Why there is no multiple inheritance in Java, but implementing multiple interfaces is allowed
大家好,我是java新手,当我尝试在java中使用多重继承概念时,它显示编译时错误。为什么java不支持它。我听说过接口关键字但是 不知道为什么java直接支持它。请帮我解释一下。
【问题讨论】:
标签: java
众所周知,多重继承的主要问题是The Diamond Problem。
我引用:
钻石问题是一个模棱两可的问题 当两个类别 B 和 C 从A继承,D类继承 来自 B 和 C。如果 D 中的方法 调用 A 中定义的方法(并且确实 不覆盖该方法),以及 B 和 C 已覆盖该方法 不同,然后从哪个班级 它继承:B 还是 C?
【讨论】:
多重继承真的很难理解。当你有两个具有冲突方法的类的多重继承时,你如何处理这个?
当然存在解决方案(例如在 C++ 中),但 Java 的创建者认为这太复杂了,而不是真正符合 Java 哲学(使开发更容易)。
来自 sun.com:
多重继承——以及它产生的所有问题——被Java抛弃了。多重继承的理想特性由接口提供——在概念上类似于 Objective C 协议。
接口不是类的定义。相反,它是一个或多个类将实现的一组方法的定义。接口的一个重要问题是它们只声明方法和常量。变量不能在接口中定义。
资源:
【讨论】:
因为它很难使用。相反,Java 有 interface 什么是更好的解决方案。
【讨论】: