5.3.3 泛化(继承)

更新于 2026年10月10日 版权声明
5.3.3 泛化(继承)

泛化是一般事物(称为父类)和该事物的较为特殊的种类(称为子类)之间的关系。有时也称泛化为“is a kind of”关系:一个事物是更一般的事物的“一个种类”。父类又称为基类或超类,子类又称为派生类。例如A是B和C的父类,B、C具有公共类(父类)A,说明A是B、C的一般化(概括,也称泛化)。

泛化关系有利于类元的描述,可以增量式地向类元添加声明,每个添加的声明都扩充了从其父类继承来的描述。继承机制利用泛化构造了完整的类元描述,泛化和继承允许不同的类元共享属性、操作以及它们共有的关系,而不用重复说明。泛化意味着子类的对象可以被用在父类的对象可能出现的任何地方,反之则不然。换句话说,泛化意味着子类可以替换父类的声明。通常子类除了具有父类的属性和操作外,还可具有更多的属性和操作。与用例图相同,类图中也把泛化关系表示成一条带有空心箭头的实线,箭头从子类指向父类,如图5-12所示。

图示

图5-12 泛化关系的表示方法

案例学习

◎图5-13的泛化关系示例中,“卡车”类和“轿车”类的父类是“汽车”类,“汽车”类和“火车”类的父类是“车辆”类,“轮船”类、“车辆”类、“飞机”类的父类是“运输工具”类,由此可以看出泛化关系的传递性。

图示(https://www.daowen.com)

图5-13 泛化关系示例

一个类可以有0个、1个或多个父类。没有父类并且最少有一个子类的类称为根类或基类;没有子类的类称为叶子类。如果一个类只有一个父类,则说它使用了单继承关系;如果一个类有多个父类,则说它使用了多继承关系(注意,在有些程序设计语言中不允许多继承关系的存在)。

在大多数情况下,用类或接口之间的泛化来表明继承关系。在UML中,可以在其他类目之间创建泛化,比如结点之间。

在UML中,对泛化关系有三个要求:

(1)子类与父类应该完全一致,对于父类所具有的属性、操作,子类应该都有。

(2)子类中除了与父类一致的信息以外,还包括额外的信息。

(3)可以使用父类的实例的地方,也可以使用子类的实例。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)