为了账号安全,请及时绑定邮箱和手机立即绑定

Golang:当你有多重继承时,接口有什么意义

Golang:当你有多重继承时,接口有什么意义

Go
阿波罗的战车 2021-06-19 17:15:21
我是一名 Java 程序员,正在学习用 Go 编程。到目前为止,我真的很喜欢这种语言。比 Java 多得多。但有一件事我有点困惑。Java 有接口,因为类只能从一个类继承。既然 Go 允许多重继承,那么接口有什么意义呢?
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

多态性

接口使函数能够有一个“占位符”参数,该参数可以采用不同的结构作为参数。例如,如果结构 Man、Woman、Child 实现接口 Human,则带有参数 Human 的方法可以采用结构 Man、Woman、Child 中的任何一个作为参数。因此,接口参数可以“变形”为作为参数传递的任何结构,只要它实现了接口中定义的所有函数。

这很重要,因为接口是 Go 中实现多态的唯一方法,因为它没有继承。因此,如果 Man '扩展' Human(通过将其作为匿名字段),则任何使用 Human 作为参数的方法都无法将 Man 作为参数。

我的困惑源于这样一个事实,即继承也是在 Java 中实现多态的一种方式,我认为这里也是如此。我站纠正!


查看完整回答
反对 回复 2021-06-21
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

如果超类型 X 是一个接口,那么维护代码的人立即知道它没有方法实现。如果超类型 Y 是抽象类,那么维护代码的人必须检查是否有方法实现。所以这是一个文档/维护/可读性的事情。


查看完整回答
反对 回复 2021-06-21
  • 3 回答
  • 0 关注
  • 229 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信