即使这可能是不好的做法,我也会说有一段时间它会实现其目标。
即使这可能是不好的做法,我也会说有一段时间它会实现其目标。
Answers:
/programming/995255/why-is-multiple-inheritance-not-allowed-in-java-or-c很好地涵盖了这个问题。
我对此的看法是:设计师可能想设计一种能够推广良好设计原则的语言。好的,因此有时候多重继承是完美的。但是,这些是例外,而不是规则,很容易被滥用。因此,设计人员决定使其无法执行。
对于那些比较好的情况,您需要使用接口。这些工作虽然很笨拙;但是,您并不需要那么多。
沃尔特·布赖特(Walter Bright)既是不包括MI的D的创建者,也是唯一一个亲自编写整个C ++编译器的人。据他说,D缺乏MI的原因是创建一个同时高效,简单且有用的MI系统太难了。我怀疑Java和C#使用类似的推理。诸如Perl和Python之类的语言并不以效率为主要目标,因此它们的系统既简单又有用,但难以高效实现。C ++似乎并不是以简单性为目标,因此C ++创建了一个几乎没人能理解的庞大复杂的系统。
我认为Walter是正确的目标。如果存在某种语言,其MI系统能够很好地满足这三个条件,请发表评论。
如果您多次使用多重继承,则会导致非常复杂的情况。太多的复杂性却没有什么好处,这就是为什么Java和C#都无法使用它。