我们知道 父类对象时可以指向子类引用的
比如: class Animal{} class Cow : Animal{}
可以写成Animal a = new Cow();
//如果需要把子类型的给父类型 那么就要用到协变
比如我写了一个泛型类 Farm<T>(泛型接口也行)
那么就不能写成Farm<Animal> f = new Farm<Cow>();了
如果想实现这种多态 定义泛型类的时候 写成Farm<out T> 这叫协变
//如果需要把父类型的给子类型 那么就要用到抗变
Farm<Cow> f = new Farm<Animal>();
想实现这样的效果 声明泛型类或泛型接口的时候 用 Farm<in T>
|