标签:父类 nbsp nim vat alt 派生 承担 图片 继承
修改一个类的原因应该只有一个。
换句话说就是让一个类只负责一件事, 当这个类需要做过多事情的时候, 就需要分解这个类。
如果一个类承担的职责过多, 就等于把这些职责耦合在了一起, 一个职责的变化可能会削弱这个类完成其它职责的能
力。
类应该对扩展开放, 对修改关闭。
扩展就是添加新功能的意思, 因此该原则要求在添加新功能时不需要修改代码。
符合开闭原则最典型的设计模式是装饰者模式, 它可以动态地将责任附加到对象上, 而不用去修改类的代码。
子类对象必须能够替换掉所有父类对象。
继承是一种 IS-A 关系, 子类需要能够当成父类来使用, 并且需要比父类更特殊。
如果不满足这个原则, 那么各个子类的行为上就会有很大差异, 增加继承体系的复杂度。
不应该强迫客户依赖于它们不用的方法。
因此使用多个专门的接口比使用单一的总接口要好
高层模块不应该依赖于低层模块, 二者都应该依赖于抽象; 抽象不应该依赖于细节, 细节应该依赖于抽象。
高层模块包含一个应用程序中重要的策略选择和业务模块, 如果高层模块依赖于底层模块, 那么底层模块的改动就会
直接影响到高层模块, 从而迫使高层模块也需要改动。
依赖于抽象意味着:
任何变量都不应该持有一个指向具体类的指针或者引用;
任何类都不应该从具体类派生;
任何方法都不应该覆写它的任何基类中的已经实现的方法
利用抽象数据类型将数据和基于数据的操作封装在一起, 使其构成一个不可分割的独立实体。 数据被保护在抽象数据
类型的内部, 尽可能地隐藏内部的细节, 只保留一些对外接口使之与外部发生联系。 用户无需知道对象内部的细节,
但可以通过对象对外提供的接口来访问该对象。
继承实现了 IS-A 关系, 例如 Cat 和 Animal 就是一种 IS-A 关系, 因此 Cat 可以继承自 Animal, 从而获
得 Animal 非 private 的属性和方法。
Cat 可以当做 Animal 来使用, 也就是说可以使用 Animal 引用 Cat 对象。 父类引用指向子类对象称为 向上转型。
继承应该遵循里氏替换原则,子类对象必须能够替换掉所有父类对象
多态分为编译时多态和运行时多态。
1. 继承
2. 覆盖
3. 向上转型
下面的代码中, 乐器类(Instrument)有两个子类: Wind 和 Percussion, 它们都覆盖了父类的 play() 方
法, 并且在 main() 方法中使用父类 Instrument 来引用 Wind 和 Percussion 对象。 在 Instrument 引
用调用 play() 方法时, 会执行实际引用对象所在类的 play() 方法, 而不是 Instrument 类的方法
标签:父类 nbsp nim vat alt 派生 承担 图片 继承
原文地址:https://www.cnblogs.com/wwhhgg/p/12691972.html