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