繼承與多型該 如何理解
阿新 • • 發佈:2019-02-02
首先思考我們應該要知道的一個問題:繼承出現的意義,或者說,我們為什麼想到用繼承。
當我們在寫比如一個計算器的工具時,首先寫了一個加法運算的類。感覺很輕鬆,在加一個減法運算時,發現把加法運算的類粘過來稍微改改就行了。同樣的,乘法、除法、開根運算、冪次方運算等,寫出來這麼多類來,發現,每一個類的大部分程式碼都是重複的,只有很少的內容是不同的。這時候,就需要我們的繼承關係登場了:
繼承,就是出現程式碼相似高、有很多共性的時候,把相同的部分摘出來,做一個父類,大家都去繼承他的方法與屬性。這樣,在每一個子類中,程式碼量就會減少很多,模組之間的聯絡變少,維護也更簡單了。
抽象類和介面的區別:
從表象上來講,
1、抽象類可以給出一些成員的實現,但介面卻不包含成員的實現
(前者方法體中可以寫東西,後者方法體不能寫東西)
2、抽象類的抽象成員可以被子類部分實現,而介面被呼叫時,子類必須實現介面的全部方法
(就是說介面中的方法,必須在子類中全部出現,哪怕是空的方法體)
3、一個類只能繼承一個抽象類,但是可以呼叫多個介面
(一個兒子只能有一個父親,單繼承規則限制,但是兒子可以身懷各種絕技)
這三點是從形態上來區別的;
還有三點可以幫助我們來區別他們倆:
1、類是對物件的抽象、介面是對行為的抽象
2、如果行為跨越多個不同的類物件,則用介面;對於一些相似的類物件,用繼承抽象類。
3、從設計的角度來講,抽象類是從子類中發現了公共的部分,從而抽象出抽象類作為父類;
而設計介面是對於物件來說,特殊的行為,從而需要介面,介面根本不知道子類的存在形式,方法如何實現也不需要過問,預先定義
可以說 抽象類是自底向上抽象的結果,介面是自頂向下設計的結果。
未完待續。。。。