首先思考我們應該要知道的乙個問題:繼承出現的意義,或者說,我們為什麼想到用繼承。
當我們在寫比如乙個計算器的工具時,首先寫了乙個加法運算的類。感覺很輕鬆,在加乙個減法運算時,發現把加法運算的類粘過來稍微改改就行了。同樣的,乘法、除法、開根運算、冪次方運算等,寫出來這麼多類來,發現,每乙個類的大部分**都是重複的,只有很少的內容是不同的。這時候,就需要我們的繼承關係登場了:
繼承,就是出現**相似高、有很多共性的時候,把相同的部分摘出來,做乙個父類,大家都去繼承他的方法與屬性。這樣,在每乙個子類中,**量就會減少很多,模組之間的聯絡變少,維護也更簡單了。
抽象類和介面的區別:
從表象上來講,
1、抽象類可以給出一些成員的實現,但介面卻不包含成員的實現
(前者方法體中可以寫東西,後者方法體不能寫東西)
2、抽象類的抽象成員可以被子類部分實現,而介面被呼叫時,子類必須實現介面的全部方法
(就是說介面中的方法,必須在子類中全部出現,哪怕是空的方法體)
3、乙個類只能繼承乙個抽象類,但是可以呼叫多個介面
(乙個兒子只能有乙個父親,單繼承規則限制,但是兒子可以身懷各種絕技)
這三點是從形態上來區別的;
還有三點可以幫助我們來區別他們倆:
1、類是對物件的抽象、介面是對行為的抽象
2、如果行為跨越多個不同的類物件,則用介面;對於一些相似的類物件,用繼承抽象類。
3、從設計的角度來講,抽象類是從子類中發現了公共的部分,從而抽象出抽象類作為父類;
而設計介面是對於物件來說,特殊的行為,從而需要介面,介面根本不知道子類的存在形式,方法如何實現也不需要過問,預先定義
可以說 抽象類是自底向上抽象的結果,介面是自頂向下設計的結果。
未完待續。。。。
c 中繼承與多型的理解
include using namespace std class base virtual base void show private int ma class derive public base derive virtual void show void test private int m...
繼承與多型
繼承 繼承是c 語言支援 重用及多型的重要機制。通過繼承,可以繼承可以在現有類的基礎上派生出新類,新類將共享現有類的成員,並且還可以新增新的成員。c 語言中,重用主要表現為可以使用現成的類 如.net框架類庫中的類 來定義新類,主要方法有組合和繼承兩種 繼承是物件導向程式設計支援 重用的另乙個重要機...
繼承與多型
虛函式只要在基類裡定義,所以繼承類都不用重新定義為虛函式,自動成為虛函式。虛函式必須有實現,普通成員函式在沒有呼叫時可以沒有實現 定義 class animal 只需要在基類定義函式為虛,子類中不需要新增virtual.smile函式在沒有呼叫時可以不實現。當有函式為虛函式時,析構函式應定義為vir...