c#介面和抽象類別的區別 最佳回答

來源:互聯網
上載者:User

這個問題是面試中經常提到的問題,這裡給大家一個最佳答案

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

另外,抽象類別可以派生自一個抽象類別,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其衍生類別必須覆蓋它們。

二、介面:
介面是參考型別的,類似於類,更和抽象類別有所相似,以至於很多人對抽象類別和介面的區別比較模糊。和抽象類別的相似之處有三點:
1、不能執行個體化;
2、包含未實現的方法聲明;
3、衍生類別必須實現未實現的方法,抽象類別是抽象方法,介面則是所有成員(不僅是方法包括其他成員);另外,介面有如下特性:
介面除了可以包含方法之外,還可以包含屬性、索引器、事件,而且這些成員都被定義為公有的。除此之外,不能包含任何其他的成員,例如:常量、域、建構函式、解構函式、靜態成員。
一個類可以直接繼承多個介面,但只能直接繼承一個類(包括抽象類別)。

介面執行個體
1 public delegate void Del();
2 public interface ITest
3 {
4 //int ?a = null;
5
6 int A
7 {
8 get;
9 }
10
11 void Test();
12 event Del OnDel;
13 int this[int index]
14 {
15 get;
16 set;
17 }
18 }
注意!還有另外一種類不能被執行個體化:
所有建構函式都被標記為private,這種類也是不能被執行個體化的,嚴格的說是不能在類外被執行個體化,可以在此類的內部執行個體化(這種方式可以用於實現單件設計模式)。注意一點,這樣的類也不能夠作為基類來繼承。

三、抽象類別和介面的使用:
抽象類別用於部分實現一個類,再由使用者按需求對其進行不同的擴充和完善;介面只是定義一個行為的規範或規定。
抽象類別在組件的所有實現間提供通用的已實現功能;介面建立在大範圍全異對象間使用的功能。
抽象類別主要用於關係密切的對象;而介面適合為不相關的類提供通用功能。
抽象類別主要用於設計大的功能單元;而介面用於設計小而簡練的功能塊。

例如:
Window表單可以用抽象類別來設計,可以把公有操作和屬性放到一個抽象類別裡,讓表單和對話方塊繼承自這個抽象類別,再根據自己的需求進行擴充和完善。
列印操作可以作為一個介面提供給每個需要此功能的表單,因為表單的內容不同,就要根據他們自己的要求去實現自己的列印功能。列印時只通過介面來調用,而不用在乎是那個表單要列印。

-----------------------

二。

類和介面有何區別?
從書上摘下來的,還是比較好懂的:
1.抽象類別是一個不完全的類,需要進一步專業化.介面只是一個行為的規範或規定;
2.介面基本上不具備繼承的任何具體特點,它僅僅承諾了能夠調用的方法;
3.一個類一次可以實現若干個介面,但是只能擴充一個父類
4.介面可以用於支援回調,而繼承並不具備這個特點.
有些直接就是介面與類的區別.第四點我不是很明白......
一個類如果要實現某個介面,除非它實現了該介面中承諾的所有方法,否則(即未實現或者僅僅實現部分方法),該類必須被聲明為抽象類別.而該類的子類也繼承了這一特性

 

 

1.抽象類別是一個不完全的類,需要進一步專業化.介面只是一個行為的規範或規定;
2.介面基本上不具備繼承的任何具體特點,它僅僅承諾了能夠調用的方法;
3.一個類一次可以實現若干個介面,但是只能擴充一個父類
4.介面可以用於支援回調,而繼承並不具備這個特點.


如果預計要建立組件的多個版本,則建立抽象類別。抽象類別提供簡單易行的方法來控制組件版本。通過更新基類,所有繼承類都隨更改自動更新。另一方面,介面一旦建立就不能更改。如果需要介面的新版本,必須建立一個全新的介面。
如果建立的功能將在大範圍的全異對象間使用,則使用介面。
抽象類別應主要用於關係密切的對象,而介面最適合為不相關的類提供通用功能。
如果要設計小而簡練的功能塊,則使用介面。
如果要設計大的功能單元,則使用抽象類別。
如果要在組件的所有實現間提供通用的已實現功能,則使用抽象類別。抽象類別允許部分實作類別,而介面不包含任何成員的實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.