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