2010-11-14 223 views
0

我需要從一個類繼承,我只需要繼承選定的屬性,這是可能的,或者你只能繼承類,如果你需要所有的屬性?類圖 - 屬性繼承

謝謝,

Chris。

+0

提及編程語言和僅繼承選定屬性的目的將會有所幫助。 – bancer 2010-11-14 23:29:09

回答

0

聽起來像你正在尋找實現繼承而不是接口繼承。有關說明,請參閱this thread,如果仍不清楚原因,請在下面註明。

鑑於您只想重用所選屬性的子集,您最好使用組合而不是繼承。

注意

它不能是接口繼承(子類型),因爲,僅「繼承」屬性的子集,一個子類的實例不會是可替代的超類的實例。例如:假設超類暴露了子類未繼承的屬性A。在運行時,聲明爲超類類型的變量v被綁定到子類的實例。然後表達式引用v.A。完全合理的要求 - 但顯然會失敗。換句話說,你打破了界面合同。 Google'Liskov替代原則'獲取更多信息。

0

這是可能的。當超類定義一個屬性時,任何子類都可以重新定義該屬性以使其具有[0..0]多重性。因此,子類只能繼承它需要的東西。 但是,正如@sfinnie提到的,這打破了Liskov Substitution,所以你最好知道你在做什麼!

的UML 2.5規範的草案,我有方便的說:

一個MultiplicityElement可以定義多種無論其邊界是零。這將允許的基數限制爲0;也就是說,它要求這個元素的實例化不包含任何值。 [...]它適用於(但不限於)重新定義更一般的分類器中存在的屬性。