繼承與集裝箱船
繼承和容器是OOP(面向對象編程實例:C++)中的兩個重要概念。簡單地說,Containership和繼承都處理向類提供附加屬性或行為的問題。繼承是類通過擴展父類從父類繼承屬性和行為的能力。另一方面,集裝箱船是一個類將不同類的對象作為成員數據包含的能力。
什麼是繼承?
如上所述,繼承是一個類通過擴展父類從父類繼承屬性和行為的能力。繼承本質上通過允許通過新定義的類擴展現有類的屬性和行為來提供代碼重用。如果類A擴展B,那麼類B稱為父類(或父類),類A稱為子類(或派生類/子類)。在這個示例場景中,類A將繼承超級類(B)的所有公共和受保護的屬性和方法。子類可以選擇性地重寫(為方法提供新的或擴展的功能)從父類繼承的行為。繼承表示OOP中的“is-a”關係。這本質上意味著A也是B。換句話說,B可以是對某個真實世界實體進行一般描述的類,但A指定了某個專門化。在實際的編程問題中,可以擴展Person類來創建Employee類。這就是所謂的專業化。但您也可以先創建Employee類,然後再將其泛化為Person類(即泛化)。在本例中,僱員將擁有該人的所有屬性和行為(即僱員也是人),並且可能還包含一些附加功能(因此,Person不是僱員)。
什麼是集裝箱船?
集裝箱船是一個類將不同類的對象作為成員數據包含的能力。例如,類A可以包含一個B類的對象作為成員。在這裡,B中定義的所有公共方法(或函數)都可以在類A中執行。類A成為容器,而類B成為包含類。集裝箱船也被稱為組成。在這個例子中,可以說A類是由B類組成的,在OOP中,集裝箱船代表了一種“有—A”關係。需要注意的是,即使容器有權執行所包含類的所有公共方法,它也不能更改或提供其他功能。當涉及到實際編程問題時,類TextBox的對象可能包含在類Form中,因此可以說Form包含TextBox(或者,表單由TextBox組成)。
繼承與集裝箱船的區別