C#繼承
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
一、繼承的類型 ![]() ![]() ![]() ![]() 類派生于接口,則用都好分隔。 2.1 虛方法 在C#中可以把在方法或者屬性的前面加上virtual,聲明基類的方法為虛方法或者虛屬性,虛方法和虛屬性的規(guī)則相同。語(yǔ)法如下: ![]() ![]() ![]() ![]() ![]() ![]() ![]() 注意:成員字段和靜態(tài)函數(shù)不能被聲明為virtual,因?yàn)檫@個(gè)概念只對(duì)類中的實(shí)例函數(shù)成員有意義。 2.2 隱藏方法 如果在基類和派生類中都聲明了簽名相同的方法,而基類中的方法又沒有聲明為virtual,派生類中的方法也沒有聲明成override,則派生類方法就會(huì)隱藏基類方法。結(jié)果是調(diào)用哪個(gè)類的方法取決于引用實(shí)例的變量類型,而不是實(shí)例本身的類型。 2.3 調(diào)用函數(shù)的基本版本 C#有一種特殊的語(yǔ)法用于從派生類中調(diào)用方法的基本版本:base.<MethodName>()。 2.4 抽象類和抽象函數(shù) C#中的抽象類要聲明為abstract,抽象類不能實(shí)例化,抽象函數(shù)沒有執(zhí)行代碼,必須在非抽象的派生類中重寫。顯然抽象函數(shù)也是虛擬的,但不需要提供virtual關(guān)鍵字,而用abstract關(guān)鍵字。如果類包含了抽象函數(shù),那么該類也是抽象的,類必須用abstract聲明。 ![]() ![]() ![]() ![]() C#允許把類和方法聲明為sealed,對(duì)于類來說,這表示不能繼承該類;對(duì)于方法來說,這表示不能重寫該方法。 ![]() ![]() ![]() 在創(chuàng)建派生類的實(shí)例時(shí),實(shí)際上會(huì)有多個(gè)構(gòu)造函數(shù)在起作用。實(shí)例化類的構(gòu)造函數(shù)本身不能初始化類,還必須調(diào)用基類中的構(gòu)造函數(shù)。即派生類的實(shí)例構(gòu)造是按層次結(jié)構(gòu)進(jìn)行的,順序是先執(zhí)行基類的構(gòu)造函數(shù),再執(zhí)行派生類的構(gòu)造函數(shù)。 基類的構(gòu)造函數(shù)總是最先調(diào)用,那么派生類的構(gòu)造函數(shù)可以在執(zhí)行的過程中調(diào)用基類的方法、屬性和其他成員,因?yàn)榛愐呀?jīng)構(gòu)造出來了,其他字段也初始化了。 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() C#中完整的修飾符列表:
四、接口 接口中只能包含方法、屬性、索引器和事件的聲明。接口不能實(shí)例化,不能有構(gòu)造函數(shù)或字段,也不包含運(yùn)算符重載。接口定義中還不允許聲明成員的修飾符,成員接口總是public的,不能聲明成virtual或者static 4.1 接口的定義和實(shí)現(xiàn) ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 接口可以繼承,其方式與類的繼承相同。 該文章在 2017/2/7 18:52:32 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |