类型不仅仅说明一组对象上的约束,还说明与其他类型之间的关系。两个类型可以有共同的特性和行为,但是,一个类型可能包括比另一个类型更多的特性,也可以处理更多的消息类型不仅仅说明一组对象上的约束,还说明与其他类型之间的关系。
两个类型可以有共同的特性和行为,但是,一个类型可能包括比另一个类型更多的特性,也可以处理更多的消息类型不仅仅说明一组对象上的约束,还说明与其他类型之间的关系。两个类型可以有共同的特性和行为,但是,一个类型可能包括比另一个类型更多的特性,也可以处理更多的消息或对消息进行不同的处理)。
继承表示了基本类型和派生类型之间的相似性。一个基本类型具有所有由它派生出来的类型所共有的特性和行为。程序员创建一个基本类型以描述系统中一些对象的思想核心。由这个基本类型派生出其他类型,表达了认识该核心的不同途径。
例如,垃圾再生机要对垃圾进行分类。这里基本类型是“垃圾”, 每件垃圾有重量、价值等等,并且可以被破碎、融化或分解。这样,可以派生出更特殊的垃圾类型,它们可以有另外的特性(瓶子有颜色)或行为(铝可以被压碎,钢可以被磁化)。
另外,有些行为可以不同(纸的价值取决于它的种类和状态)。程序员可以用继承建立类的层次结构,在该层次结构中用类型术语来表述他需要解决的问题。
第二个例子是经典的形体问题,可以用于计算机辅助设计系统或游戏模拟中。这里基本类型是“形体”,每个形体有大小、颜色、位置等。每个形体能被绘制、擦除、移动、着色等。由此,可以派生出特殊类型的形体:圆、正方形、三角形等,它们中的每一个都有另外的特性和行为,例如,某些形体可以翻转。
有些行为可以不同(计算形体的面积)。类型层次结构既体现了形体间的类似,又体现了它们之间的区别。用与问题相同的术语描述问题的解是非常有益的,这样,从问题描述到解的描述之间就不需要很多中间模型(程序语言解决大型问题,就需要中间模型)。
面向对象之前的语言,描述问题的解不可避免地要用计算机术语。使用对象术语,类型层次结构是主要模型,所以可以从现实世界中的系统描述直接进入代码中的系统描述。实际上,使用面向对象设计,人们的困难之一是从开始到结束过于简单。一个已经习惯于寻找复杂解的、训练有素的头脑,往往会被问题的简单性难住。