C# 中的繼承有兩種類型:
實現(xiàn)繼承(類繼承)——派生類型繼承了基類型的所有成員,包括方法、屬性、事件和索引的實現(xiàn)代碼,派生類既可以直接調(diào)用基類的各種函數(shù)成員的實現(xiàn)代碼,也可以自己編寫代碼來覆蓋或重寫它們,還可以為派生類添加新的數(shù)據(jù)和函數(shù)成員。
接口繼承(非實現(xiàn)繼承)——派生類型只繼承了基類型中的函數(shù)簽名(signature of a function),包括函數(shù)名、類型參數(shù)的個數(shù)、每個形參(formal parameter)的類型和種類(kind,值、引用、輸出),從左到右的順序,但是不包括函數(shù)的返回類型、參數(shù)名稱、類型參數(shù)的名稱、以及可對最右邊的參數(shù)指定的參數(shù)修飾符。而沒有繼承基類型中的實現(xiàn)代碼。接口繼承主要用于指定派生類應(yīng)該具有什么特性和功能。接口繼承相當(dāng)于接口的實現(xiàn)。
C++只支持實現(xiàn)繼承,VB則只支持接口繼承,C++/CLI、Java和C# 都既支持實現(xiàn)繼承,也支持接口繼承,所以非常適用于編寫基于組件的分布式軟件。
C# 中的結(jié)構(gòu),支持(多重)接口繼承,但是不支持實現(xiàn)繼承。即,你可以在結(jié)構(gòu)中實現(xiàn)多個接口中定義的函數(shù)成員,但是你卻不能從類或結(jié)構(gòu)來派生新的結(jié)構(gòu),也不能從結(jié)構(gòu)派生新的類。不過,用戶定義的結(jié)構(gòu),總是自動派生于System.ValueType抽象類,還可以派生于(實現(xiàn))多個接口。
C# 中的類,則支持單一實現(xiàn)繼承和多重接口繼承。
新聞熱點
疑難解答
圖片精選