里氏代换原则: 所有引用基类(父类)的地方, 必须能透明地使用其子类的对象.
里氏代换原则告诉我们, 在软件系统中, 将一个基类对象替换成它的子类对象, 程序将不会产生任何错误和异常, 反过来则不成立, 如果一个软件实体使用的是一个子类对象的话, 那么它一定能够使用基类对象.
使用里氏代换原则需要注意的问题:
- 子类的所有方法必须在父类中声明, 或子类必须实现父类中声明的所有方法. 根据里氏代换原则, 为了保证系统的扩展性, 在程序中通常使用父类来定义, 如果一个方法只存在于子类中, 在父类中不提供相应的声明, 则无法在以父类定义的对象中使用该方法.
- 我们在运用里氏代换原则时, 尽量把父类设计成抽象类或者接口, 让子类继承父类或者实现接口, ,并实现在父类中声明的方法, 运行时, 子类实例替换父类实例, 我们可以很方便的扩展系统功能, 同时无需修改原有子类的代码, 增加新的功能可以通过增加一个新的子类来实现. 里氏代换原则是开闭原则的具体实现手段之一.
里氏代换原则是开闭原则的具体实现手段之一.
废话那么多, 说白了里氏代换原则就是多肽嘛, 搞懂了多肽的性质就搞懂了里氏代换原则. 我觉得开发中的多肽就是里氏代换原则的例子, 一模一样, 完全符合.
原文在这里, 这里写的更加详细.
Reference: http://blog.csdn.net/lovelion/article/details/7540445