C#中介面與抽象類別的區別

來源:互聯網
上載者:User

標籤:

  介面與抽象類別是面試中經常會考到的點,容易混淆。首先瞭解下兩者的概念:

  一、抽象類別:
      抽象類別是特殊的類,只是不能被執行個體化;除此以外,具有類的其他特性;重要的是抽象類別可以包括抽象方法,這是普通類所不能的。抽象方法只能聲明於抽象類別中,且不包含任何實現,衍生類別必須覆蓋它們。另外,抽象類別可以派生自一個抽象類別,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其衍生類別必須覆蓋它們。

  二、介面:      

  介面是參考型別的,類似於類,和抽象類別的相似之處有三點:        

  1、不能執行個體化;       

  2、包含未實現的方法聲明;       

  3、衍生類別必須實現未實現的方法,抽象類別是抽象方法,介面則是所有成員(不僅是方法包括其他成員);

  另外,介面有如下特性: 介面除了可以包含方法之外,還可以包含屬性、索引器、事件,而且這些成員都被定義為公有的。除此之外,不能包含任何其他的成員,例如:常量、域、建構函式、解構函式、靜態成員。一個類可以直接繼承多個介面,但只能直接繼承一個類(包括抽象類別)。

詳細的,定義上的區別分析,可以參考此篇部落格:http://www.cnblogs.com/lovemyth/archive/2008/09/08/828909.html

  這裡概括、形象化地解釋一下介面和抽象類別的區別:

  介面主要是對行為的抽象;抽象類別主要是對類的抽象。

  更加形象的比喻如下:

  1.飛機會飛,鳥會飛,他們都繼承了同一個介面“飛”;但是F22屬于飛機抽象類別,鴿子屬於鳥抽象類別。
  2. 就像鐵門木門都是門(抽象類別),你想要個門我給不了(不能執行個體化),但我可以給你個具體的鐵門或木門(多態);而且只能是門,你不能說它是窗(單繼承);一個門可以有鎖(介面)也可以有門鈴(多實現)。 門(抽象類別)定義了你是什麼,介面(鎖)規定了你能做什麼(一個介面最好只能做一件事,你不能要求鎖也能發出聲音吧(介面汙染))。

  代碼級的區別展示:

  一、抽象類別:

  抽象類別裡面可以包括部分具體實現,而介面則不行。

  

public abstract class AClass{    private int x;    private int y;    public int X { get { return x; } }    public int Y { get { return y; } }     public float Sum() { return X + Y; }     public abstract float Average();} public class BClass : AClass{    public override float Average()    {        return Sum() / 2;    }}

  如上面的例子,在抽象類別中,實際包括了:幾處具體的實現,二個屬性,一個求和方法。
  同時對於介面來說,根本就無法定義欄位成員,也就是private int x,private int y;它是無法定義的。

  二、介面:

  對於介面實現同樣的功能,你只能做到:

public interface A{    public int X{get;}    public int Y{get;}    public float Sum();}

  你無法提供Sum的任何功能。

 

  小結:

  1、我們在理解一門技術上,首先可以從其用處上來考慮,要認識到這門技術是做什麼用的。這樣才能加深對於知識的理解。後續項目中使用到了介面和抽象類別會繼續完善此文檔。

  2、文章僅僅是自己的總結與體會(包括粘貼),希望能為大家提供到協助。感謝CSDN的phy,和CNBLOG使用者殘葉。

 

  

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.