里氏转换的原则:1、子类可以直接赋值给父类。父类若指向子类,那么可以强制转化为该子类。
例如
static void main(string[] args)
{
Son son1 =new Son("张三");
Person P = son1;
p.Say();
//实例化了一个Son对象,然后赋值给P,转化为父类对象。
//P是一个父类对象,但是里面存放的是一个Son类型的引用类型
Son son2 =(Son)P;
son2.say();
//因此可以直接将其强转为Son对象,再赋值给一个Son类型的变量
//转化回Son类型以后,就可以使用子类和父类的方法了
}
所以里氏转化强行转化的前提是,事前就存放的该类型。
网友评论