【发布时间】:2013-08-05 14:12:47
【问题描述】:
我是一名 Java 程序员,正在学习 Go 编程。到目前为止,我真的很喜欢这种语言。比 Java 多很多。
但有一件事我有点困惑。 Java 有接口,因为类只能从一个类继承。既然 Go 允许多重继承,那么接口的意义何在?
【问题讨论】:
-
依我拙见,stackoverflow.com/questions/8531292/… 的答案也适用于此。
-
接口和多重继承是相关的,但只是相切的。 Java 的接口不能替代多重继承。接口允许您将合同与实现分开。多重继承的用途有限,但会导致更多的麻烦和不直观、难以调试的问题,恕我直言。
-
@JimGarrison,你能详细说明一下吗?接口只是告诉“做什么”,而通过继承,您还可以获得有关“如何”做的信息,并可以选择覆盖该行为。继承怎么会造成麻烦,在什么场景下接口会更好。举个例子真的很有帮助!
-
the diamond inheritance problem 的变通方法已经做了很多工作。 Java 完全避免了这种情况。关于接口和继承之间区别的完整论文将占用比 SO 更多的空间。
-
完全同意你的看法。 Java 避免了多重继承,因此需要接口。 Go 通过让你覆盖冲突的方法来启用多重继承。我的问题是接口在这种情况下的用途。原来是鸭子打字。我正在添加相同的答案
标签: java inheritance interface go multiple-inheritance