国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#抽象類和接口的區別分析

2019-10-29 21:42:38
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C#抽象類和接口的區別,詳細的分析了抽象類與接口的概念與特性,并對二者作出比對說明,需要的朋友可以參考下
 

很多C#的初學者在編程時都容易把抽象類和接口搞混,本文就為大家從概念上講解抽象類和接口的區別:

一、抽象類:

含有abstract修飾符的class即為抽象類,抽象類是特殊的類,只是不能被實例化,可以創建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例;除此以外,具有類的其他特性;重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能聲明于抽象類中,且不包含任何實現,派生類必須覆蓋它們。另外,抽象類可以派生自一個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋。

二、接口:

接口是引用類型的,類似于類,和抽象類的相似之處有三點:
1、不能實例化;
2、包含未實現的方法聲明;
3、派生類必須實現未實現的方法,抽象類是抽象方法,接口則是所有成員(不僅是方法包括其他成員);

接口有如下特性:

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

兩者的語法區別:

1.抽象類可以有構造方法,接口中不能有構造方法。

2.抽象類中可以有普通成員變量,接口中沒有普通成員變量

3.抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。

4. 抽象類中的抽象方法的訪問類型可以是public,protected,但接口中的抽象方法只能是public類型的,并且默認即為public abstract類型。

5. 抽象類中可以包含靜態方法,接口中不能包含靜態方法

6. 抽象類和接口中都可以包含靜態成員變量,抽象類中的靜態成員變量的訪問類型可以任意,但接口中定義的變量只能是public static final類型,并且默認即為public static final類型。

7. 一個類可以實現多個接口,但只能繼承一個抽象類。

8.接口可以用于支持回調,而繼承并不具備這個特點.    9.抽象類實現的具體方法默認為虛的,但實現接口的類中的接口方法卻默認為非虛的,當然您也可以聲明為虛的. 

抽象類和接口的使用:

1.如果預計要創建組件的多個版本,則創建抽象類。抽象類提供簡單的方法來控制組件版本。
2.如果創建的功能將在大范圍的全異對象間使用,則使用接口。如果要設計小而簡練的功能塊,則使用接口。
3.如果要設計大的功能單元,則使用抽象類.如果要在組件的所有實現間提供通用的已實現功能,則使用抽象類。
4.抽象類主要用于關系密切的對象;而接口適合為不相關的類提供通用功能。
5.好的接口定義應該是具有專一功能性的,而不是多功能的,否則造成接口污染。如果一個類只是實現了這個接口的中一個功能,而不得不去實現接口中的其他方法,就叫接口污染。

希望本文所述對大家的C#程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇雄县| 黄冈市| 南乐县| 灵台县| 都江堰市| 华安县| 辽宁省| 屯昌县| 永吉县| 左贡县| 鄄城县| 温州市| 青河县| 乌恰县| 赤水市| 洪洞县| 陕西省| 郑州市| 德安县| 房山区| 彭州市| 桦甸市| 博乐市| 隆化县| 淳化县| 浠水县| 朔州市| 乌什县| 金溪县| 华容县| 兴隆县| 通渭县| 伊吾县| 阳春市| 长阳| 武夷山市| 富锦市| 葫芦岛市| 新安县| 崇左市| 墨竹工卡县|