學(xué)習(xí)oop多態(tài)
1.方法重載
2.方法重寫
3.里氏替換原則
方法重載:構(gòu)造函數(shù)屬于特殊的方法重載
方法重載是指同一個類中相同方法的不同行為
方法重載的特點(diǎn):
1.方法名必須相同
2.參數(shù)列表必須不相同(這里的不相同是參數(shù)類型,參數(shù)個數(shù),以及參數(shù)順序)
3.在有相同參數(shù)列表的個數(shù)的前提下,方法返回值不作為判斷方法是否重載的依據(jù).
方法的重寫:是指在繼承關(guān)系中不同類之間方法之間的比較和研究
第一個關(guān)鍵字:vietual(虛)還有abstrac抽象方法的重寫
用vietual修飾的方法稱之為虛方法。
virtual一般情況下和override需要成對出現(xiàn)。
如果子類重寫使用了override,則父類必須擁有virtual修飾的方法或則abstract的抽象方法
反過來不一定成立,因?yàn)槲覀冞€有方法覆蓋
第二個關(guān)鍵字:override(重寫)
為什么要使用方法重寫呢?
1.使用虛方法其實(shí)就是對目前的程序不是很滿意,暫時方法功能是實(shí)現(xiàn)的,希望后面的程序元通過重寫父類方法的方式,進(jìn)行功能上的優(yōu)化。
2.可以通過繼承系統(tǒng)提供的類,去修改系統(tǒng)類中提供的虛方法
方法重寫需要注意的地方:
1.不能重寫父類中用sealed修飾的方法
2.不能重寫父類中用static修飾的方法
3.如果父類中存在abstact方法,子類必須重寫
密封類:斷子絕孫類
如果我們的類是密封類,那么就意味著不能有任何派生類.
但是密封類是可以擁有父類滴.
c#中密封類使用sealed關(guān)鍵字,sealed可以將類或者方法聲明為密封類或則密封方法.
對于密封類來說,表示不能繼承該類
對于密封方法來說,表示不能重寫該方法
密封類不能使用protected(因?yàn)槠錄]有派生類).
密封類不能使用virtual.(使用該方法必須有子類)
密封類的不可繼承性,所以密封類不能聲明為抽象的,即sealed關(guān)鍵字不能和abstract共同使用
如果用sealed修飾方法.必須要遵循一個條件:這個類必須有父類,并且重寫了父類的某個虛方法才可以用sealed修飾,否則是絕對不行滴.
密封類的作用就是防止外界修改本類,破壞類的內(nèi)部構(gòu)造.