日期:2014-05-17 浏览次数:20976 次
“协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型。
?
?
?
“逆变”则是指能够使用派生程度更小的类型。
?
?
?
?
?
?
?
解释的很正确,大致就是这样,不过不够直白。
?
?
?
直白的理解:
?
?
?
“协变”->”和谐的变”->”很自然的变化”->string->object :协变。
?
“逆变”->”逆常的变”->”不正常的变化”->object->string 逆变。
?
?
?
?
?
?
?
上面是个人对协变和逆变的理解,比起记住那些派生,类型,原始指定,更大,更小之类的词语,个人认为要容易点。
?
?
?
?
?
?
?
下面是一则笑话:
?
?
?
一个星期的每一天应该这样念:
星期一 = 忙day;
星期二 = 求死day;
星期三 = 未死day;
星期四 = 受死day;
星期五 = 福来day;
星期六 = 洒脱day;
星期天 = 伤day
?
为了演示协变和逆变,以及之间的区别,请创建控制台程序CAStudy,手动添加两个类:
?
?
?
?
?
?
?
因为是演示,所以都是个空类,
?
?
?
只是有一点记住Dog 继承自Animal,
?
?
?
所以Dog变成Animal 就是和谐的变化(协变),而如果Animal 变成Dog就是不正常的变化(