1. 程式人生 > >C#編程(二十二)----------繼承的類型

C#編程(二十二)----------繼承的類型

集成 語言 type 共享 面向對象 多重繼承 值類型 不同 不同的

繼承的類型

在面向對象的編程中,有兩種截然不同的集成類型:實現繼承和接口繼承

實現繼承:表示一個類型派生於一個基類型,它擁有該基類型的所有成員字段和函數.在實現繼承中,派生類型采用基類型的每個函數的實現代碼,除非在派生類型的定義中指定重寫某個函數的實現代碼.在需要給現有的類型添加功能,或許=多相關的類型共享一組重要的公用功能時,這種類型的繼承非常有用.

接口繼承:表示一個類型只繼承了函數的簽名,沒有繼承任何實現代碼.在需要指定該類型具有某些可用的特征時,最好使用這種類型的繼承.

C#支持實現繼承和接口繼承.他們都內置於語言和框架中,因此可以根據應用程序的體系結構選擇合適的繼承.

一些語言是支持多繼承的,即一個類派生自多個類.使用多重繼承的優點是有爭議的:一方面,可以使用多重繼承編寫發雜,但是緊湊的代碼,另一方面,使用多重繼承的代碼常常很難理解和調試.

C#是不支持多重繼承的,到那時C#允許類型派生於多個接口----多重接口繼承.這說明C#可以派生自另一個類和任意多個接口.更準確的說,因為SYstem.Object是一個公共的基類,所以每個C#(出類Object類之外)都有一個基類,還可以有人以多個基接口.

使用結構(值類型)的一個限制是不支持繼承,單每個結構都可以派生自System.Valuetype實際上還應該更仔細一點:不能編碼實現類型層次的機構,單結構可以實現接口.換句話說,結構不支持實現繼承,但支持接口繼承,事實上,定義結構和類可以總結為:

結構總是派生自System.ValueType,他們還可以派生自人一多個接口.

類總是派生自用戶選擇的另一個類,他們還可以派生自人一多個接口.

C#編程(二十二)----------繼承的類型