咨詢電話:023-6276-4481
熱門文章
電 話:023-6276-4481
郵箱:broiling@qq.com
地址:重慶市南岸區(qū)亞太商谷6幢25-2
繼承是軟件復(fù)用的一種形式。使用繼承可以復(fù)用現(xiàn)有類的數(shù)據(jù)和行為,為其賦予新功能而創(chuàng)建出新類。
節(jié)省開發(fā)時(shí)間,重用經(jīng)過實(shí)踐檢測(cè)和調(diào)試的高質(zhì)量代碼,提供系統(tǒng)的質(zhì)量。
在現(xiàn)有類(基類、父類)上建立新類(派生類、子類)的處理過程稱為繼承。派生類能自動(dòng)獲得基類的除了構(gòu)造函數(shù)和析構(gòu)函數(shù)以外的所有成員,可以在派生類中添加新的屬性和方法擴(kuò)展其功能。[1]
1.繼承的定義和使用
在現(xiàn)有類(基類、父類)上建立新類(派生類、子類)的處理過程稱為繼承。派生類能自動(dòng)獲得基類的除了構(gòu)造函數(shù)和析構(gòu)函數(shù)以外的所有成員,可以在派生類中添加新的屬性和方法擴(kuò)展其功能。
<訪問修飾符>class
派生類名:
基類名
{//類的代碼}
繼承的特性:
可傳遞性:C從B派生,B從A派生,那么C不僅繼承B也繼承A。
單一性:只能從一個(gè)基類中繼承,不能同時(shí)繼承多個(gè)基類繼承中的訪問修飾符base和this關(guān)鍵字基類的構(gòu)造函數(shù)和析構(gòu)函數(shù)不能被繼承的。但可以使用關(guān)鍵字base來繼承基類的構(gòu)造函數(shù)。
C#中的base關(guān)鍵字代表基類,使用base關(guān)鍵字可以調(diào)用基類的構(gòu)造函數(shù)、屬性和方法。
2.方法的重載、重寫和隱在基類和派生可以存在同名方法,這些同名的方法可以重載、重寫和隱藏。
(1)重載(方法同名,但參數(shù)列表不同)
重載是在同一個(gè)作用域內(nèi)發(fā)生(比如一個(gè)類里面),定義一系列同名方法,但是方法的參數(shù)列表不同,就是簽名不同,簽名由方法名和參數(shù)組成。能通過傳遞不同參數(shù)來決定到底調(diào)用哪一個(gè)同名方法。返回值類型不同步能構(gòu)成重載,因?yàn)楹灻话ǚ祷刂?。同名方法返回值的類型要相同,要不不能重載。
(2)重寫(方法同名,且參數(shù)列表相同)
基類方法中使用virtual關(guān)鍵字聲明方法和派生類中使用override關(guān)鍵字聲明方法名稱相同,參數(shù)列表也相同。
基類方法和派生類方法的簽名相同,實(shí)現(xiàn)了派生類重寫基類中的同名方法
(3)隱藏
基類中的方法不聲明virtual,在派生類中聲明與基類同名時(shí),需要使用new關(guān)鍵字,以隱藏基類同名方法。
3.統(tǒng)一的標(biāo)準(zhǔn):接口
接口的定義:接口用來描述一種程序的規(guī)定,可定義屬于任何類或結(jié)構(gòu)的一組相關(guān)行為,接口可由方法、屬性、事件、索引器、或這4種成員類型的任何組合構(gòu)成。接口不能包含常數(shù)、字段、運(yùn)算符、實(shí)例構(gòu)造函數(shù)、析構(gòu)函數(shù)或類型,也不能包含任何種類的靜態(tài)成員。接口一定是公共的。
接口語法如下:
<訪問修飾符>
interface
接口名{//接口主體}
接口的實(shí)現(xiàn)
C#中通常把派生類和基類的關(guān)系稱為繼承,類和接口的關(guān)系稱為實(shí)現(xiàn)。接口不能定義構(gòu)造函數(shù),所以接口不能實(shí)例化。
接口的繼承
C#中的派生類只能有一個(gè)基類,不支持類的多重繼承,但可以繼續(xù)承接多個(gè)接口,通過接口實(shí)現(xiàn)多繼承性。
C#中接口可以多繼承接口之間可以互相繼承,普通類和抽象類可以繼承自接口。一個(gè)類可以同時(shí)繼承一個(gè)類和多個(gè)接口,但接口不能繼承類。
4.抽象類和密封類
用來描述共性的類是抽象類,抽象類中不考慮具體實(shí)現(xiàn),只確定必須具有的行為,即確定抽象方法。