C#淺談NET抽象類和接口的區別

一、抽象類:

在類聲明中使用abstract修飾符的類稱爲抽象類。含有一個或一個以上的抽象成員的類,必須定義爲抽象類。當方法聲明包含abstract修飾符時,稱該方法爲抽象方法,雖然抽象方法同時隱含爲虛擬方法,但是它不能有virtual修飾符。聲明中包含abstract修飾的屬性稱爲抽象屬性。抽象方法或屬性沒有方法體或屬性訪問器。抽象類只能是其他類的基類,抽象類不能實例化,必須在繼承中實現。抽象類中可以包含非抽象成員。抽象類的目的是提供一個合適的基類,以派生其他的類在類聲明中使用abstract修飾符的類稱爲抽象類。含有一個或一個以上的抽象成員的類,必須定義爲抽象類。當方法聲明包含abstract修飾符時,稱該方法爲抽象方法,雖然抽象方法同時隱含爲虛擬方法,但是它不能有virtual修飾符。聲明中包含abstract修飾的屬性稱爲抽象屬性。抽象方法或屬性沒有方法體或屬性訪問器。抽象類只能是其他類的基類,抽象類不能實例化,必須在繼承中實現。抽象類中可以包含非抽象成員。抽象類的目的是提供一個合適的基類,以派生其他的類
二、接口:

接口是引用類型的,類似於類,和抽象類的相似之處有三點:

1、不能實例化;

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

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

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

這是我自己總結的他的區別:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章