淺談C#中的介面和抽象類別

來源:互聯網
上載者:User

標籤:

C#中介面為"其他方面互不相干"的類型提供公用的服務和特徵;C#中class只支援但繼承,使用介面卻支援多繼承,例如:C#中System.String是從System空間中的4個interface繼承而來。
public sealed class String:ICompare,ICloneable,ICovertible,IEnumerable;C#中對class使用sealed關鍵字修飾,代表這個類不能夠被在其他類繼承。

接下來描述一下2者的區別:


1.兩者表達的概念不一樣,抽象類別是一類事物的高度彙總,那麼繼承子類相對這個抽象類別來說是一種"是"的關係,介面是定義行為的規範,因此實現介面的類相對於介面來說,"是行為需要按照介面來完成"。舉個例子,花是所有花類的統稱,牡丹是花,玫瑰是花,那麼花相對牡丹和玫瑰來說是抽象類別。而對於發出香味這一動作來說,香水也會發出香味。前者就是所說的抽象類別,後者就是所說的介面。

2.抽象類別在定義類型方法時候,可以給出實現部分,也可以不給出實現部分,而對於介面來說,其中所有的定義都不給出實現部分,例如:

public abstract DemoClass{    public virtual void VirtualTest()    {        Console.WriteLine("This is a virtual function");    }        public abstract void AbstractTest();}public interface IDemoInterface{    void InterFaceTest();    void InteFaceDemo();}
View Code

3.繼承類對於2者所涉及的方法的實現是不同的。繼承類對於抽象類別所定義的抽象方法可以不需要重寫,也就是說可以沿用抽象類別的 方法,而對於介面來說,定義的介面或者屬性都必須在繼承類中給出相應的實現。

4.由區別3可以得出,如果在抽象類別中新增一個方法,繼承類可以不需要做改變,但是如果在介面中新增了一個介面方法,必須在子類 中做相應的變化,實現新增的方法。

接下來,簡單介紹一下介面相對於抽象類別的優劣:

1.介面不光可以作用於參考型別也可以作用於實值型別,抽象類別只能作用於參考型別 ;

2..NET的類型只能實現單繼承,但是介面可以實現多繼承;

3.介面類只定義類屬性和方法,而與真正的實作類別沒有太大關係,抽象類別與繼承類之間的關係就比較緊密了;

4.通過介面可以減少類型暴露的屬性和方法,從而便可以保護類型對象,一個實現介面的類型,可能包含其他方法或者屬性,但是方法 返回的時候,可以返回介面對象,這樣,調用端只能通過介面提供的方法或者屬性,訪問對象的相關元素,這樣可以有效保護對象的其 他元素;

5.減少實值型別的拆箱操作。對於Struct定義的實值型別資料,每從存放集合當中取出來,都需要進行拆箱操作,這時採用Struct+Interface 結合的方法,從而降低拆箱操作。

其實在繼承中,到底使用介面還是抽象類別。介面是固定的,約定俗成的,因此在繼承類中必須提供介面相應的方法和屬性的實現。而對於 抽象類別來說,抽象類別的定義方法的實現,貫穿整個繼承樹,因此其中方法的實現或者重寫都是不確定的。因此相對而言,抽象類別比介面更 靈活一些。

以下通過圖表簡單總結一下2者之間的差異:

 

淺談C#中的介面和抽象類別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.