下面來看乙個組合的案例:
public class engine
public void rev()
public void stop()
}public class wheel
}public class window
public void rolldown()
}public class door
public void close()
public window getwindow()
public void setwindow(window window)
}public class car
}
public static void main(string args)
}
執行結果:
為輪胎打氣理解組合和繼承之間的區別了,那怎樣在他們之間做出選擇呢?向上關窗
啟動汽車引擎
關閉汽車引擎
開啟車門
關閉車門
選擇組合方式還是整合方式的乙個清晰的辦法就是看看是否需要在新類上向基類進行向上轉型。如果必須進行向上轉型,則繼承是必要的;但是如果不需要,則應該好好考慮一下自己是否真的需要繼承。
繼承與組合的選擇
1 繼承與組合是重用物件 的機制。2 關於父子類的初始化,請參考初始化列表 不能繼承的函式 l建構函式和析構函式 建構函式與析構函式只負責它所在的那一層上的構建與釋放。子類仍然需要自己的建構函式,也需要手動呼叫父類的自定義建構函式。loperator 理由同上。4 new delete是可以被繼承的...
菱形繼承和組合與繼承的選擇。
class person class student public person class teacher public person class assistant public person,public student void test1 由上述的 中可以看出,在給a.name初始化的時候...
組合與繼承改選擇誰?
在物件導向程式設計中,有一條非常經典的設計原則,那就是 組合優於繼承,多用組合少用繼承。為什麼不推薦使用繼承?組合相比繼承有哪些優勢?如何判斷該用組合還是繼承?繼承是物件導向的四大特性之一,用來表示類之間的 is a 關係,可以解決 復用的問題。雖然繼承有諸多作用,但繼承層次過深 過複雜,也會影響到...