天天看點

7. 泛化(Generalization)

  什麼是泛化關系?用一個例子簡單的說:假設A是B和C的父類,B、C具有公共類(父類)A,說明A是B、C的一般化(概括,也稱泛化),B、C是A的特殊化。

  在程式設計上,泛化關系(Generalization)就是我們常說的繼承關系,稱為“is-a-kind-of”關系,泛化關系用于描述父類與子類之間的關系,父類又稱作基類或超類,子類又稱作派生類。在UML中,泛化關系用帶空心三角形的直線來表示。

  在代碼實作時,使用面向對象的繼承機制來實作泛化關系,如在Java語言中使用extends關鍵字、在C++/C#/OC中使用冒号“:”來實作。

  UML示例圖如下所示:

7. 泛化(Generalization)
  在UML當中,對泛化關系有三個要求:

  • 子類與父類應該完全一緻,父類所具有的屬性、操作,子類應該都有;
  • 子類中除了與父類一緻的資訊以外,還包括額外的資訊;
  • 可以使用父類的執行個體的地方,也可以使用子類的執行個體。

無善無惡心之體,

有善有惡意之動,

知善知惡是良知,

為善去惡是格物。