【C#】里氏转换
里氏转换
今天学习了里氏转换,对于平常看C#视频一集看3、4分钟大脑容量就已充满的我来说,一下子看了半个多小时,破纪录了,哈哈!
C#视频中分为基类(父类)和派生类(子类),如果子类想要调用父类中的某些方法或某些东西,是不能直接调用的,这时候就需要将子类转换成父类,在通过父类去调用。里面的转换就是所谓的里氏转换。
如图所示(person是父类,student和teacher是子类),下面依次列出了里氏准换的4种情况,其中1,3是成功的,2和4转换不了
2失败的原因:从图中可以看出person父类要转换成teacher子类,但转换的时候却转换了student子类。就比如我想变成一个超人,你却把我变成了芭比公主,变错了!
4失败的原因:父类不能直接变子类,要先new你要变成哪个子类
判断
写代码时,代码当时可能不报错,但一 运行起来就会报错。所以设置一个判断,如有错了提示“转换不了”,否则转换。代码如下所示:
as也是转换,但如果转换不了的不报异常,返回来null
is返回的是bool值, true就是能转换,false就是不能转换