当我遇到Java中没有包含多重继承的原因时,给出的理由是保持“简单性”和“减少复杂性”。 但是,如果使用来自C ++背景的Java环境,您是否认为支持多继承的接口概念使问题变得复杂而不是解决它?是否会导致推断:
答案 0 :(得分:3)
你应该阅读Bjarne Stroustrup关于多重继承的观点:
我们真的需要多重继承吗?
不是真的。我们可以不用 使用变通办法进行多重继承,就像我们能做的那样 没有使用变通办法的单一继承。我们甚至可以做到 没有使用变通办法的类。 C是该争用的证明。
但是,每种现代语言都有静态类型检查和 继承提供了某种形式的多重继承。在C ++中, 抽象类通常用作接口,而类可以有很多 接口。其他语言 - 通常被认为“不是MI” - 只是有一个 它们等同于纯抽象类的单独名称: 接口。语言提供继承的原因(单一和 多个)是语言支持的继承通常是优越的 解决方法(例如使用转发功能到子对象或 为了便于编程,用于检测 逻辑问题,可维护性以及性能。
答案 1 :(得分:2)
多个实现继承和多个接口继承不相同的野兽。
但是,如果它们要添加多个实现继承,那么它会使GC和其他语言实现复杂化。
答案 2 :(得分:0)
我认为Java(和许多其他OO语言)设计者的选择主要是由fragile base problem推动的。确实,我们不需要需要多重继承,但值得注意的是,我们不需要需要单一。面向对象的编程是关于实体的身份。在这方面,继承可被视为语法糖。
答案 3 :(得分:-1)
java中的接口概念是 NOT ,用于提供多重继承功能。