a类的实现常常使用其它类的实例, 它们提供了该类所需要的服务。 a这些实例应当受到保护不被其它对 象存取,包括同一个类的其它实例。 口在四边形的例子中,定义4个 point 类的实例作为 Quadrilateral类的实 例的4个顶点。这些poin对象不能 被其它对象存取
继承 mheritance) a继承是使用已存在的定义做为基础 建立新定义的技术。 新类的定义可以是既存类所声明的 数据和新类所增加的声明的组合。 新类复用既存的定义,而不要求修 改既存类。 既存类可当做基类来引用,则新类 相应地可当做派生类来引用
Polygon Quadrilateral referencepoint reference Point Vertices Vertices raw draw move(△x,△y) moUe(x,△y) contains? (apoint contains(aPoint (a) Polygon类 (b) Polygon类的子类 Quadrilateral
使用继承设计一个新类,可以视为 描述一个新的对象集,它是既存类 所描述对象集的子集合。 a这个新的子集合可以认为是既存类 的一个特殊化。 Quadrilater类是 Po90n类的特殊化。 Quadrilateral 是限制为四条边的多边形。我们还 可以进一步地把类 Quadrilateral特 殊化为 Rectangle
类 Quadrilateral的界面可以等同于类 Polygon的界面,而 Rectangle类的界 面又与 Quadrilateral类的界面相同。 a新类的界面还可以被看做是既存类界 面的一个扩充界面。例如,从一个既 存的车辆类派生的四轮驱动车类可能 不仅是车辆类子集合定义的特殊化, 而且还可能在新类的界面中引入新的 能力