为什么大多数编程语言都不支持多重继承?

时间:2010-05-16 12:39:21

标签: oop inheritance multiple-inheritance

为什么大多数编程语言都不支持多重继承?

我真的可以使用此功能开发不同的应用程序布局吗?

3 个答案:

答案 0 :(得分:10)

作为开发人员,多重继承在许多情况下都很有用,但它极大地增加了语言的复杂性,这使得编译器开发人员和程序员的生活更加艰难。

  • 当两个父类具有相同名称的数据成员或方法时,会出现一个问题。很难解决子类引用的问题。

  • 当两个父类继承自同一个基类,在继承层次结构中形成“菱形”模式时,会发生另一个。

  • 需要指定父类的初始化/详细说明的顺序 - 这有时会导致行为在继承顺序发生变化时发生变化 - 这可能会让开发人员感到意外。

  • 某些语言支持对'super'或等效语句的引用,引用此对象的基类属性。在具有多重继承的语言中,这很难得到支持。

  • 某些语言尝试提供自动对象关系模型,因此可以使用常规RDMS使对象保持持久性。这种映射在最好的时候很难(它被描述为软件开发的“越南战争”),但如果支持多重继承则要困难得多。

答案 1 :(得分:4)

不支持它的一个原因是方法解决的模糊性。

http://en.wikipedia.org/wiki/Diamond_problem

但是,我不确定“大多数”编程语言的含义。今天使用的许多都直接支持它(C ++,Python,Perl,OCaml)或者具有类似功能的机制(Ruby和Scala可以想到)。

答案 2 :(得分:-3)

许多语言不支持多重继承的真正原因只是语言开发人员的懒惰。为了掩盖这种令人尴尬的失败,各种各样的借口都被制造出来,“它让开发人员的生活变得困难”,但是对于任何实际使用过一种语言来实现它的人来说,在1个月后,多重继承变得自然而轻松。没什么大不了的。

唯一的问题是,在你意识到它是多么有用和容易之后,你会对那些不支持它的语言过敏,这可能会限制你的职业前景。

所以我的建议是远离它。