定义:
(1)一个软件实体如果使用的是一个父类的话,那
么一定适用于其子类,而且它察觉不出父类和子
类对象的区别。也就是说,在软件里面,把父类
替换成它的子类,程序的行为没有变化。
(2)一个软件实体如果使用的是一个子类的话,那
么它不能适用于其父类。
里氏代换原则就是使用父类的地方就可以传递子类。
以下通过案例进行理解里氏代换原则:
首先创建一个父类Person,写一个display方法
创建一个子类Man继承了Person这个类,重写其display方法
创建一个MainClass测试类,里面写一个main启动方法,写一个display方法,参数是Person这个对象,方法中调用person的display方法。
运行结果如下
对于里氏代换原则的定义来说就是我们测试类MainClass中调用display方法可以将父类换成子类如下:
这其实就是多态,就是方法参数是父类,我们用多态的形式传递其子类对象进去,也是成立的。
但是反过来如果方法的参数是子类对象,我们就不可以传递父类对象。
案例二:
创建一个Bird鸟 接口,有个方法fly飞
创建一个类 老鹰 实现了Brid接口。
创建一个麻雀类 实现了Brid接口
但是这个时候如果是企鹅的话,它实现了鸟类这个接口,但它不会飞
创建一个MainClass测试类,main方法和fly方法
测试发现企鹅就不会飞,所以企鹅不能实现鸟类的接口。