要遵守 UML 语义,互相之间具有泛化关系的模型元素必须属于同一类型。例如,可以在参与者之间或者在用例之间使用泛化关系,但是,不能在参与者与用例之间使用泛化关系。
可以添加泛化关系以捕获父模型元素中的属性、操作和关系,然后在一个或多个子模型元素中对它们进行复用。因为具有泛化关系的子模型元素将继承父模型元素的属性、操作和关系,所以,必须只为子模型元素定义与父模型元素不相同的属性、操作或关系。
父模型元素可以具有一个或多个子模型元素,且任何子模型元素可以具有一个或多个父模型元素。更常见的情况是一个父模型元素具有多个子模型元素。
泛化关系没有名称。
如下列图中所示,泛化关系在图编辑器中显示为一条从子模型元素指向父模型元素的带空心箭头的实线。
具有单个子代的单个父代 |
具有多个子代的单个父代 |
下图说明了一个销售多种商品的 Web 站点的电子商务应用程序。该应用程序具有一个 InventoryItem 类,该类是父类(也称为超类)。此类包含所有商品使用的属性(例如,Price)和操作(例如,setPrice)。
在定义该父类之后,为每种类型的商品(例如,书籍和 DVD)都创建了子类。Book 类使用 Inventory 类中的属性和操作,然后对其添加属性(例如,author)和操作(例如,setAuthor)。DVD 类也使用 Inventory 类中的属性和操作,但是将对它添加属性(例如,manufacturer)和操作(例如,setManufacturer),它们与添加至 Book 类的属性和操作不同。