为什么java不支持多重继承

时间:2010-09-22 09:53:03

标签: java

  

可能重复:
  Why there is no multiple inheritance in Java, but implementing multiple interfaces is allowed

大家好,我是java新手,当我尝试在java中使用多继承概念时,它显示编译时错误。为什么java不支持它。我听说过关键字但是 不知道为什么java直接支持它。请帮我解释一下。

3 个答案:

答案 0 :(得分:21)

多重继承(Colin和Rin提到)的主要问题是The Diamond Problem

我引用:

  

钻石问题含糊不清   当两个B和C类出现时   继承自A,D类继承   来自B和C两者。如果是D中的方法   调用A中定义的方法(并且确实如此)   不要覆盖方法),以及B和C.   已经覆盖了那个方法   不同的是,然后从哪个班级   它继承了:B还是C?

答案 1 :(得分:15)

多重继承可能真的很难理解。当你有两个具有冲突方法的类的多继承时,你如何处理它?<​​/ p>

当然存在解决方案(例如在C ++中),但Java的创建者认为它是复杂的方式而不是Java哲学(使开发变得更容易)。

来自sun.com:

  

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


资源:

答案 2 :(得分:1)

因为,很难使用它。相反,Java有interface更好的解决方案。