第五章 Java 的 duck typing
来源:6-3 接口的定义和实现

编程之夜
2018-02-12
视频中只演示了 Java 的 继承,如果是用 接口去实现呢,那不就是老师在 go 里所要讲的灵活的 duck typing 了吗?
写回答
1回答
-
这里说了<R extends Retriever>,其中Retriever就是一个接口。不用泛型的话写成String Download(Retriever r)。
在Java里我传进来的这个Retriever必须显式实现Retriever接口,不然的话即使他有get方法也不行(传统面向对象类型系统)。但是go语言中只要传进来的东西有get方法,就认为它是符合Retriever接口的,就可以传过来(duck typing)。
Java的传统面向对象类型系统带来的问题是如果我们同时需要Retriever接口和Poster接口,在Java里必须加一个RetrieverPoster接口,别人必须显式实现它。否则如果人家implements Retriever, Poster,那还是不能传过来。
20
相似问题