最近学习的时候,发现里氏转换这个好像作用域某些问题的时候,用不用里氏转换都没有什么区别,所以就产生了一个疑问?什么时候用里氏转换?
介绍一下里氏转换:
情景前提:
Person是父类,Teacher是子类,继承了父类Person。
情况一:
Person p = new Person();
Teacher t = new Teacher();
Student stu = (Student)p;
解析:报异常,父类不能转化为子类。
情况二:
Person p = new Teacher();
Teacher t = (Teacher )p;
t.SayHi();
解析:没有报异常,实例化的子类,转化为父类,然后又转换为子类。
情况三:
Person p = new Teacher();
Student stu = (Student)p;
stu.Show();