A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Sayme 中级黑马   /  2013-11-27 22:15  /  999 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Sayme 于 2013-11-27 22:57 编辑

目前知道 协变是  继承的类型的实例可以直接给 基类的实例 因为 继承类满足于基类

抗变呢?

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

4 个回复

倒序浏览
请最好用生动 形象 容易理解的例子讲述  我看书看到头要炸掉了

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
也不是很清楚,楼主是看到那一部分了??{:soso_e132:}

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
u010209195 发表于 2013-11-27 22:18
也不是很清楚,楼主是看到那一部分了??

不是课程里面的 是C#高级编程里面的103页 虽然书上写了一堆也运行了代码

可就是一下头脑发晕 看不懂 抗变到底是什么 无法理解

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
我们知道 父类对象时可以指向子类引用的
比如: 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>

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马