什麼是泛化關系?用一個例子簡單的說:假設A是B和C的父類,B、C具有公共類(父類)A,說明A是B、C的一般化(概括,也稱泛化),B、C是A的特殊化。
在程式設計上,泛化關系(Generalization)就是我們常說的繼承關系,稱為“is-a-kind-of”關系,泛化關系用于描述父類與子類之間的關系,父類又稱作基類或超類,子類又稱作派生類。在UML中,泛化關系用帶空心三角形的直線來表示。
在代碼實作時,使用面向對象的繼承機制來實作泛化關系,如在Java語言中使用extends關鍵字、在C++/C#/OC中使用冒号“:”來實作。
UML示例圖如下所示:
在UML當中,對泛化關系有三個要求:- 子類與父類應該完全一緻,父類所具有的屬性、操作,子類應該都有;
- 子類中除了與父類一緻的資訊以外,還包括額外的資訊;
- 可以使用父類的執行個體的地方,也可以使用子類的執行個體。
無善無惡心之體,
有善有惡意之動,
知善知惡是良知,
為善去惡是格物。