面向对象之 协变逆变

协变

就是协着变,跟着变,我跟你变,你怎么变我怎么变。

逆变

就是逆着变,反着变,你变我也变,但我跟你变的相反 

 

从中看到有几个要素

跟着变

 

来个数学例子

y=x

在坐标系上是一条东北到西南的直线

你是x

我是y

x变大

y跟着变大

所以y对于x是协变的

y其实是x的一种函数关系

y随着x变大是因为要维持这种函数关系

 

来个物理例子

矢量

矢量由坐标分量和坐标上的基的乘积来表示

基就比如数量单位,方向单位

分量表示以基为单位的长度,有多少个基

这里的几个元素是: 矢量,坐标系,坐标分量,基

这几个元素的关系是怎么样的呢

坐标系变化了,其实也就是基变换了,不论是方向还是单位

对于同一个矢量来说

参考的坐标系的基变化了,分量肯定要变化,而且是逆变的,才能保证此矢量不变,不管基于何种坐标系

所以

对于坐标系而言

基是协变的基

分量是逆变的分量

矢量在这里的作用

就像上面例子里面的函数关系

它在这里就是一个标杆

不管你们怎么变

必须确保我是不变的

 

是因为不变

维持函数关系不变,不管x怎么变大,总有协变的y来维持关系维持规律

维持物体本身不变,不管参考系如何变化,因为有逆变分量的中和

 

顺着变的是协变

为了阻止变,扭转变从而达到不变的,是逆变

 

现在开始看协变逆变在程序里怎么体现

也就是一个实体的类型变了

然后带来的协变和逆变

 

实体的类型变换就是子类父类的相互转换

比如里氏变换

在任何场景下

子类型可以安全的转换成父类型

 

//TODO: 

1,引用二中的引入与总结

2,引用三中的引入与总结

3,引用四中的引入与总结

4,里氏变换?

 

 

【暑假科普VII】协变性,协变与逆变

.NET 4.0中的泛型协变和反变

 

一句话清晰总结协变和逆变

10分钟了解C#中的协变和逆变

 

 

转载于:https://www.cnblogs.com/tirestay/p/3756294.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值