我是Java程序员,正在学习使用Go语言编程。到目前为止,我真的很喜欢这种语言。比Java多得多。
但是有一件事我有点困惑。Java具有接口,因为类只能从一个类继承。由于Go允许多重继承,所以接口的意义是什么?
多态性
接口使函数具有“占位符”参数,该参数可以采用不同的结构作为参数。例如,如果结构Man,Woman,Child实现了Human接口,则参数为Human的方法可以将Man,Woman,Child结构中的任何一个作为参数。因此,只要接口参数实现接口中定义的所有功能,它就可以“变形”为作为参数传递的任何结构。
这很重要,因为接口是Go中实现多态性的唯一方法,因为它没有继承。因此,如果Man(通过将其作为匿名字段)“扩展”了Human,则任何将Human用作参数的方法都将无法将Man作为参数。
我的困惑源于这样的事实,即继承也是Java中实现多态性的一种方式,我认为在这种情况下也是如此。我纠正了!