前言:前阵子写了一篇有关里氏替换的博客,不过后来不小心误删了...不过也好,自己之前的知识理解不够透彻,特此重写一篇。
里式转化:子类型必须能替换掉它们的父类型。
在C#中与继承相理解:建立一个抽象的父类,而父类中没有具体的方法体,所以要通过具体的子类替换掉父类来实现功能。
延伸理解:儿子终有一天要变成父亲来继承父业。在这里儿子指子类,父亲指父类,继承父业就指代实现功能。
下面进入小杨老师的例子讲解:
注:该例子中,使用Teacher、Student为子类,它们分别有SayHi()与SayHello()方法;而Person为父类,有Say()方法。
1.不可替换的情况
1.1 父类对象不可隐式替换掉子类
Person p2 = new Person();
Teacher t2 = new Teacher();
t2 = p2;
简单来讲就是Teacher t2 = new Person();系统会报错
1.2 父类对象不能强制替换子类
Person p3 = new Person();
Teacher t3 = new Teacher();
t3 = (Teacher)p