查看: 2206|回复: 0

[.NET源码] 里氏转换

发表于 2018-4-23 08:00:04
里氏转换

之前匆匆忙忙学过里氏转换,但是又忘了,今天写下博客来记录吧。

概念:1 可以将子类对象(派生类)赋值给父类(基类)对象

父类:Person person=new Child();

例子:

上图就是一个简单例子:将字符串数组ABC通过分隔符“|”进行分割,结果如黑窗口所示。

重点:请看红笔划得地方,join("分隔符","params object[]value"),本来join方法里的参数是object类型的数组,但是这里却改写为string[]{...}

原因:object是父类,而string是子类,可以将子类直接赋值给父类。

2 如果父类里放的是子类对象,那么就可以将父类对象强制转化为子类对象。

Person person=new Child();

Child child=(Child)person;

例子:

这个例子主要就是定义了父类person ,子类student,teacher, person类型的数组,里面存放了子类对象(student,teacher),和本类对象(person)。

当遍历数组,想输出各个对象的方法。请看红笔划的地方,将父类对象(sj[i])强转为子类,然后输出子类的方法。这就验证了里氏转换的第二个原则。

这篇文章的内容也是看了视频所写,旨在记录学习的过程,如有错误,还望指正,谢谢。



回复

使用道具 举报