*----------------* *----------------* *---
| Duck | | RubberDuck | |
|----------------| |----------------| |---
|color: "" | extends to |color: "Yellow" | |
|numLeg: 2 | ----------> |numLeg: 0 | and | ...
|haveWings: True | |haveWings: True | |
|----------------| |----------------| |---
|swim() | |swim() | |
*----------------* *----------------* *---
從上圖中可以看出,如果我想將Duck類擴展到另一個具有不同類屬性值的Duck-like類。我應該怎麼做?如何創建子類,使其屬性值不會從父類重寫?
由於我已經搜索了一些信息,我知道該屬性不能被覆蓋。那麼我認爲我的設計是錯誤的(在面向對象的設計中是錯誤的)。請給我一些建議,以「簡單的面向對象的方式」改進我的程序(或重新設計我的程序)。
請注意,我不關心鴨類(因爲我只是用它作爲原型)。鴨類將有屬性或沒有屬性不重要,但在我的設計中,我只是認爲母類應該有一些默認值(這可能是我的誤導)。
完美答案!我想我以前就知道這一點,但可能會忘記它。非常感謝你。 – fronthem 2014-11-21 08:33:47
對不起@尼日爾,如果沒有特技線。這還能工作嗎?如果使用這個技巧,我會覺得有點難以閱讀。 – fronthem 2014-11-21 09:21:36
@ terces907當然!第一個構造函數是最重要的,因爲它是在子類中用'super(...)'調用的構造函數,第二個構造函數只是爲了方便,所以可以將其刪除。別客氣 ;) – NiziL 2014-11-21 09:46:18