》》一个基类型包含其所有导出类型所共享的特性和行为。可以创建一个基类型来表示系统中某些对象的核心概念,从基类
型中导出其他类型,来表示此核心被实现的各种不同方式。
》》不需要在问题描述和解决方案描述之间建立许多中间模型,。
》》通过使用对象,类型层次结构成了主要模型,因此,可以直接从真实世界中对系统的描述过渡到用代码对系统进行描述。
》》当继承现有类型时,也就创建了新的类型。这个新的类型不仅包括现有类型的所有成员(尽管private 成员被隐藏了起来,
并且不可访问)而且更重要的是它复制了基类的接口。也就是说,所有可以发送给基类对象的消息同时也可以发送给导
出类对象。由于通过发送给类的消息的类型可知类的类型,所以这也就意味着导出类与基类具有相同的类型。
》》通过继承而产生的类型等价性是理解面向对象程序设计方法内涵的重要门槛。
》》由于基类和导出类具有相同的基础接口,所以伴随此接口的必定有某些具体实现。也就是说,当对象接收到特定消息时,
必须有某些代码去执行。
》》有两种方法可以使基类和导出类产生差异。
第一种方法是:直接在导出类中添加新方法。这些新方法并不是基类接口的一部分。这意味着基类不能直接满足你的所有
需求,因此必需添加更多的方法。
第二种方法是:改变现有基类的方法的行为,这被称为覆盖那个方法。要想覆盖某个方法,可以直接在导出类中创建该方
法的新定义即可。
》》如果继承仅仅只覆盖了基类的方法(不添加在基类中没有的方法),就意味着导出类和基类是完全相同的类型,因为它
们具有完全相同的接口。结果可以用一个导出类对象来完全替代一个基类对象。这可以被视为纯粹替代。通常称之为替代
原则。
》》有时必须在导出类型中添加新的接口元素,这样也就扩展了接口。这个新的类型仍然可以替代基类,但是这种替代并不完
美,因为基类无法访问新添加的方法。