里氏转换
里氏转换
之前匆匆忙忙学过里氏转换,但是又忘了,今天写下博客来记录吧。
概念: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])强转为子类,然后输出子类的方法。这就验证了里氏转换的第二个原则。
这篇文章的内容也是看了视频所写,旨在记录学习的过程,如有错误,还望指正,谢谢。