知识卡片

继承是收益与代价并存的双刃剑

普通读书笔记卡 · 1983

内容

继承的收益是代码共享、可重用性与可扩展性(覆写父类方法即可扩展行为);代价是侵入性 (继承就必须拥有父类全部属性方法)、降低子类灵活性、增强耦合性(父类修改可能连带所有 子类调整)。发散:这种”能力越大、耦合越重”的取舍是所有复用机制的共性,接口组合之所以 被更多提倡,正是为了用更弱耦合换取类似复用收益。

参考来源

- 位置:《设计模式之禅(第2版)》第2章《里氏替换原则》(源文件:_epub-src/text/part0008.html) - 结论依据:原文先并列列出继承的5点优点(代码共享、可重用性、可扩展性等),随后并列列出3点缺点(侵入性、降低灵活性、增强耦合性),说明继承是利弊并存的语言机制,需要用里氏替换原则来趋利避害。 - 原始内容:继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法;降低代码的灵活性……增强了耦合性。当父类的常量、变量和方法被修改时,需要考虑子类的修改。