对开闭原则 OpenClose的补充
对抽象化的规范
一、定义
如果对每一个类行为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有放生变化,那么类型T2是类型T1的子类型
1、定义扩展
2、引申含义
子类可以扩展父类的功能,但不能改变父类原有的功能
- 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法
- 子类中可以添加自己特有的方法
- 当子类的方法重载父类的方法时,方法的前置条件(即方法的输入/入参)要比父类方法的输入参数更宽松
- 如父类入参为HashMap,那么子类入参应为Map
- 当子类的方法实现父类的方法时(重写/重载或实现抽象方法),方法的后置条件(即方法的输出/返回值)要比父类更严格或相等
二、优点
- 约束继承泛滥,开闭原则 OpenClose的一种体现
- 加强程序的健壮性,同时变更时也可以做到非常好的兼容性
- 提高程序的可维护性和扩展性
- 降低需求变更时引入的风险