黑马程序员技术交流社区
标题:
求讲解泛型的协变和抗变
[打印本页]
作者:
Sayme
时间:
2013-11-27 22:15
标题:
求讲解泛型的协变和抗变
本帖最后由 Sayme 于 2013-11-27 22:57 编辑
目前知道 协变是 继承的类型的实例可以直接给 基类的实例 因为 继承类满足于基类
抗变呢?
作者:
Sayme
时间:
2013-11-27 22:16
请最好用生动 形象 容易理解的例子讲述 我看书看到头要炸掉了
作者:
u010209195
时间:
2013-11-27 22:18
也不是很清楚,楼主是看到那一部分了??{:soso_e132:}
作者:
Sayme
时间:
2013-11-27 22:22
u010209195 发表于 2013-11-27 22:18
也不是很清楚,楼主是看到那一部分了??
不是课程里面的 是C#高级编程里面的103页 虽然书上写了一堆也运行了代码
可就是一下头脑发晕 看不懂 抗变到底是什么 无法理解
作者:
Sayme
时间:
2013-11-27 22:56
我们知道 父类对象时可以指向子类引用的
比如: 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>
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2