【发布时间】:2012-10-30 14:10:05
【问题描述】:
我理解协方差和反方差这两个术语。但是有一件小事我无法理解。在 coursera 上的“Scala 中的函数式编程”课程中,Martin Ordersky 提到:
函数在其参数类型上是逆变的,而在其参数类型上是协变的 他们的返回类型
例如在 Java 中,让 Dog 扩展 Animal。并设一个函数:
void getSomething(Animal a){
我有函数调用
Dog d = new Dog();
getSomething(d)
所以基本上发生的事情是Animal a = d。根据wiki,协方差是“将宽转换为窄”。上面我们正在从狗转换为动物。那么参数类型不是协变的而不是逆变的吗?
【问题讨论】: