我个人感觉,需要弄清楚一个东西到底是怎么回事,只需要知道他是为什么而诞生的,这样可以很快的明白他的用法甚至思想
在java中,会出现这样的情况,两个不同的类并没有相互继承关系,但是很明显他们有很多共同的行为,如果希望让他们能被同一个方法作为参数进行调用,但是很遗憾的是,至少我目前能使用的方法就是 把逻辑层或者接口提取到接口中,通过以接口为参数类型来引用参数,但是这样还是隐隐然存在着一种继承关系,因为个人感觉,实现接口只是一种极其特殊的继承关系罢了.
那么duck typing是怎么解决这个问题的呢,比如说,你定义只要有手就是人类,那么我们会将所有有手的东西看做人类,不管他是猪狗牛羊,还是别的.duck typing描述的是外部行为而并非内部结构.
java:
<R extends Retriever>
String download(R r) {
return r.get("");
}
传入的参数必须实现Retriever接口
不是duck typing
接口由使用者定义,这个其实很有意思,后面会描述
如果觉得《go语言学习(4)接口 duck typing》对你有帮助,请点赞、收藏,并留下你的观点哦!