里氏代换原则
子类型必须能够替换调它们的父类型。
白话翻译:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。
在编程的世界里,企鹅是不能作为鸟的父类的,因为鸟有会飞的方法,但是企鹅不会飞。
只有当子类可以替换调父类,软件的那位的功能不受影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。
例如,狗继承动物类,动物有吃喝拉撒,狗都有,除此以外,在狗有吃喝拉撒的功能下,狗还可以有叫,跑等功能。
正是由于类型的可替换性才使得使用父类类型的模块在无须修改的情况下就可以扩展。
