即使可能是不好的做法,我也会说有时间实现其目的。

有帮助吗?

解决方案

https://stackoverflow.com/questions/995255/why-is-multiple-inheritance-nheritance-not-allowed-in-java-or-c 很好地介绍了这个问题。

我对此的看法是:设计师可能想制作一种促进良好设计原则的语言。好的,所以有时多次继承是完美的。这些是例外,而不是规则,可以很容易地滥用。因此,设计师决定使不可能做。

对于那些很好的情况,您需要使用界面。那些工作,尽管笨拙地;但是,您不需要那么多。

其他提示

只是为了说明为什么不这样说,多种继承得到了C ++的支持,但深刻灰心,因为您可以用MI的组成完成大多数内容,但是以更干净的方式完成了。与C ++不同,C#不是“混合”类型的OOP语言,即它不是从以前的语言中演变的。

如果您确实需要多个继承,则可以实现多个接口。

沃尔特·布莱特(Walter Bright)既是D的创建者,不包括MI,也不包括唯一一个自己编写整个C ++编译器的人。据他说,D缺乏MI的原因是,很难创建一个同时高效,简单且有用的MI系统。我怀疑Java和C#使用类似的推理。像Perl和Python这样的语言没有效率作为主要目标,因此它们具有简单且有用的系统,但很难有效地实施。 C ++似乎没有简单的目标,因此它创建了一个几乎没有人理解的大规模复杂系统。

我认为沃尔特是正确的目标。如果有任何具有MI系统可以很好地满足所有这三个标准的语言,请发表评论。

如果您经常使用多个继承,则会导致非常复杂的情况。 太多的复杂性几乎没有好处,这是为什么它被排除在Java和C#上。

因为语言设计师显然想产生更好的C ++,而不是一种更好的语言。 (可以辩论他们多么成功。)

C ++ - 样式多重继承存在一些问题,因此从C ++派生的人通常会省略它(Java,C#,D)。其他语言(Eiffel和Common Lisp)命名两种,以不同的方式进行操作,并且似乎没有相同的问题。

许可以下: CC-BY-SA归因
scroll top