方案的重复使用
    为重复使用一个类,最简单的办法就是仅直接使用那个类的对象。但同时也能将那个类的一个对象置入一个新类。我们把这叫作“创建一个成员对象”。这个概念叫作“组织”——在现有类的基础上组织一个新类。有时,我们也将组织称做“包含”关系。

    重新使用接口
    在继承过程中,若原始类发生了变化,其子类也会反映出这种变化。
    在Java语言中,继承是通过extendds关键字实现的使用继承时,相当于创建了一个新类。这个新类不仅包含了现有类的所有成员(尽管private成员被隐藏起来,且不能访问),更重要的是,它复制了基础类 的接口。也就是说,可向基础类的对象发送的所有消息亦可原样发送给衍生类的对象。根据可以发送的消息,我们能知道类的类型。这意味 着衍生类具有与基础类相同的类型!

    改善基础类

    1. 子类扩展出新的接口
    2. 子类重写(override)父类的方法

    等价与类似的关系
    is-a 的意思是如果A是B,那么B就是A的基类。
    比如:等边三角形是使是三角形,那么,三角形就是等边三角形的基类。
    has a 是如果A中有B,那么,B就是A的组成部分。
    如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承;比如菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承而不是聚合。
    如果你确定两件对象之间是has-a的关系,那么此时你应该使用聚合;比如电脑是由显示器、CPU、硬盘等组成的,那么你应该把显示器、CPU、硬盘这些类聚合成电脑类,而不是从电脑类继承。
    这种思想在OOP上,体现在哪方面呢?答案就是抽象类和接口的关系。