Java 不允许多重继承,但它允许实现多个接口。为什么?
原文由 abson 发布,翻译遵循 CC BY-SA 4.0 许可协议
Java 不允许多重继承,但它允许实现多个接口。为什么?
原文由 abson 发布,翻译遵循 CC BY-SA 4.0 许可协议
我的一位大学导师是这样向我解释的:
假设我有一个类,它是烤面包机,还有另一个类,它是核弹。他们都可能有一个“黑暗”设置。它们都有一个 on() 方法。 (一个有 off(),另一个没有。)如果我想创建一个类,它是这两个的子类……如您所见,这是一个可能会在我面前爆发的问题.
因此,主要问题之一是,如果您有两个父类,它们可能对同一功能有不同的实现——或者可能是两个具有相同名称的不同功能,就像我讲师的例子一样。然后你必须决定你的子类将使用哪一个。当然,有一些方法可以处理这个问题——C++ 就是这样做的——但是 Java 的设计者认为这会使事情变得过于复杂。
但是,对于接口,您是在描述该类能够做的事情,而不是借用另一个类的方法来做某事。与多个父类相比,多个接口不太可能导致需要解决的棘手冲突。
原文由 Syntactic 发布,翻译遵循 CC BY-SA 2.5 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
因为接口只指定类在做 _什么_,而不是它是 如何 做的。
多重继承的问题在于,两个类可能定义了 不同的方式 来做同样的事情,而子类无法选择选择哪一种。