
继承的优点:
1、代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性。
2、提高代码的重用性。
3、子类可以形似父类,但又异于父类。
4、提高代码的可扩展性,实现父类的方法就可以“为所欲为”。君不见很多开源框架扩展接口都是通过继承父类来完成的。
5、提高产品或项目的开放性。
继承的缺点:
1、继承是侵入性的,只要继承就必须拥有父类的所有属性和方法。
2、降低代码的灵活性,子类必须拥有父类的属性和方法,让子类*的世界中多了些约束。
3、增强了耦合度,当父类的常量、变量和方法被修改时,必须要考虑子类的修改,而且在缺乏规范的环境下,这种修改可能带来非常糟糕的结果——大片代码需要重构。
让继承的利最大化于弊的解决方案就是引入里氏替换原则。
定义:继承必须确保父类所拥有的性质在子类中仍然成立。
含义:
1、子类完整的拥有父类的状态和行为。
2、子类可以有自己的个性。
3、覆盖或实现父类的方法时输入的参数可以被放大、输出的结果可以被缩小。