Java 不允许从多个类继承(仍然允许从多个接口继承。),我知道它与经典的钻石问题非常一致。但我的问题是,为什么在从多个基类继承时没有歧义(因此不会出现钻石问题)时,为什么 java 不允许像 C++ 那样的多重继承?

有帮助吗?

解决方案

这是一个设计决定 Java的。你永远不会得到它,所以不要担心太多。虽然MI可能会帮助你做出的混入,这是唯一的好MI会做任何你。

其他提示

我已阅读,大多数程序员不正确的方式使用多重继承。 “先走一步,从一个类继承只是为了代码重用”是不是在多重继承的情况下,最好的做法。

许多程序员不知道什么时候才能在大多数情况下,使用简单的继承。多重继承,必须谨慎使用,且仅当你知道,如果你想有一个良好的设计,你在做什么。

我不认为在Java缺乏多重继承的(如C ++)会把你的代码/应用程序的设计/问题域映射到限制类。

如果Java支持多重继承那么它可能影响的java结果的其它特征 这是用来调用父类constructor.if程序考虑超()方法有多个超类(因为多重继承的),那么编译器会弄不清楚哪些超类的构造函数应该被调用,抛出一个错误

简单。去引用 汤姆·辛特斯,

Java 设计团队努力使 Java:

  • 简单、面向对象且熟悉
  • 坚固且安全
  • 架构中立且便携
  • 高性能
  • 解释型、线程型和动态型

Java 语言省略多重继承的原因 这主要源于 "简单、面向对象、熟悉 "的目标。由于 一种简单的语言,Java 的创建者希望这种语言能让大多数人 开发人员无需大量培训就能掌握。为此,他们 努力使语言尽可能与 C 相似(熟悉) 而不会继承 C 不必要的复杂性(简单)。

在设计师的看法中,多种继承会引起比解决方案更多的问题和混乱。因此,他们从 就像削减运算符重载一样)。设计师 丰富的 C 经验告诉他们,多重继承只是 不值得头疼。

的Java设计者决定。多重继承可以通过使用接口来模拟。

一个简单的回答是,在Java中的所有类从java.lang.Object中IIRC派生。所以,你会 总是有钻石的问题... :-D

这是事实,爪哇没有使用,以支持执行(只是类型即接口)的多重继承。这是一个设计决定。

然而,由于Java的8,它支持使用默认方法多重继承。请参见 http://docs.oracle.com/javase/tutorial/java/ IandI / multipleinheritance.html

  

执行多重继承是继承的能力   从多个类方法定义。出现这种问题   类型多重继承,如名称冲突和模糊性。   ...默认方法引入多重继承的一种形式   实施

在多个父类中定义自己的东西实现和子类这两个必须处理的要使用的执行模糊的钻石出现问题。那么,如果在Java中所有的类都派生自object,这是一个父类。 “单亲,多个派生类”是不一样的“多父母,单派生类”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top