999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C#中抽象類與接口的分析與比較

2013-01-29 08:35:12宿遷經貿高等職業技術學校毛廣敏
電子世界 2013年10期
關鍵詞:方法

宿遷經貿高等職業技術學校 毛廣敏

C#中抽象類與接口的分析與比較

宿遷經貿高等職業技術學校 毛廣敏

抽象類和接口是C#語言中兩個重要的對象引用類型,是C#程序設計使用多態性的基礎,但也是初學者容易搞混淆的兩種類型,本文主要介紹了兩者的概念、特點和典型應用實例,并對兩者進行比較。

抽象類;接口;分析;區別

抽象類和接口是C#語言中兩個重要的對象引用類型,是C#程序設計使用多態性的基礎,但也是初學者容易搞混淆的兩種類型,本文主要介紹了兩者的概念、特點和典型應用實例,并對兩者進行比較。通過本文的介紹能使得初學者掌握抽象類和接口概念、特點和使用場合。

一、抽象類

在類聲明中使用abstract修飾符的類稱為抽象類。含有一個或一個以上的抽象成員的類,必須定義為抽象類。當方法聲明包含abstract修飾符時,稱該方法為抽象方法,雖然抽象方法同時隱含為虛擬方法,但是它不能有virtual修飾符。聲明中包含abstract修飾的屬性稱為抽象屬性。抽象方法或屬性沒有方法體或屬性訪問器。抽象類只能是其他類的基類,抽象類不能實例化,必須在繼承中實現。抽象類中可以包含非抽象成員。抽象類的目的是提供一個合適的基類,以派生其他的類。使用抽象類的好處之一是,當要求組建新版本時,可根據需要將附加方法添加到基類。如下例:

抽象類應用實例:

從上面的例子可以看出在程序中聲明了一個抽象類animal,在該類中聲明了一個抽象方法FoodHabits(),該方法沒有形參,無返回值。Carnivorous和Herbivorous是animal的派生類,在這兩個派生類中必須重寫FoodHabits()方法,否則會發生編譯錯誤,重寫方法的關鍵字是override。在主函數中不可以創建基類animal的實例,但可以將實現抽象類的對象賦給抽象類的對象。

二、接口

在C#中類只能實現“單一繼承”,要實現多重繼承,必須使用接口。一個接口定義一個協定,實現接口的類或結構必須遵守其協定。接口可以從多個基接口繼承,而類或結構可以實現多個接口中。接口聲明可以聲明零個或多個成員,接口的成員必須是方法、屬性、事件或索引器。接口不以包含常數、字段、運算符、實例構造函數、析構函數或類型,也不能包含任何種類的靜態成員。接口本身不提供它所定義的成員的實現,接口只指定實現該接口的類或接口必須提供的成員。所有接口成員都隱式地具有public訪問權限。類可以從單個類繼承但可以實現多個接口,實現接口的類需要實現接口的所有成員。接口可以從現有接口中繼承,一個實現接口的類也實現它的繼承接口的基類接口。

雖然不能創建接口對象,但可以聲明接口變量,接口變量必須指向一個實現了接口的類的對象。如下例中的TypeUse[]t=new TypeUse[4];聲明了一個接口類型的數組,它包含4個接口類型的變量。以下語句聲明了類的對象,并實例化,接口變量(接口數組元素)指向類的對象。

以上語句說明不同類型的對象被分配給一個接口引用。以下程序中應用程序通過接口引用數組調用Showinfo方法,并返回結果,在Showinfo方法中引用Type屬性和調用TellAboutSelf方法,不同對象及其屬性、方法關聯在一起,因此,在引用Type屬性和調用TellAboutSelf方法時,不必考慮是哪一個對象,這也是多態行為的典型示例。

三、接口實現“多重繼承”

四、抽象類和接口的比較

從上面兩個關于抽象類和接口的例子中可以看出抽象類和接口相似的地方和區別。

(一)相同點

1.抽象類和接口都包含可以由派生類繼承的成員,兩者都不能直接實例化。

2.兩者都可以被繼承。3.兩者都不能被實例化。4.都可以包含方法聲明。

5.派生類必須實現未實現的方法。

(二)區別

1.類是對對象的抽象,可以把抽象類理解為把類當作對象,抽象成的類叫做抽象類。而接口只是一個行為的規范或規定。

2.抽象類是一種不能實例化而必須從中繼承的類。抽象類可封裝繼承類的通用不變的功能,但也可通過實現抽象類的抽象方法和屬性為繼承類提供其不同的功能。在抽象類中可以包含非抽象成員。接口是完全抽象成員集合,可以被看作是為操作定合同。如果類實現了一個接口,必須實現接口把定義的所有成員。

3.抽象類的派生類也必須重寫抽象類中的抽象方法或屬性。抽象類中的成員沒有限制,但接口中的成員必須是方法、屬性、事件或索引器。所有接口的成員都是隱式具有public訪問權限,并且不能顯式的聲明接口成員的訪問權限,而抽象的成員的訪問權限需指定。

五、抽象類和接口的使用場合

1.如果預計要創建組件的多個版本,則創建抽象類。抽象類提供簡單的方法來控制組件版本。

2.如果創建的功能將在大范圍的全異對象間使用,則使用接口。如果要設計小而簡練的功能塊,則使用接口。

3.如果要設計大的功能單元,則使用抽象類,如果要在組件的所有實現間提供通用的已實現功能,則使用抽象類。

4.抽象類主要用于關系密切的對象,而接口適合為不相關的類提供通用功能。

本文通過對抽象類和接口概念、特點、典型應用實例、比較分析及使用場合的介紹,相信能對初學者有所幫助。

[1]陳銳.C#程序設計(高等學校計算機科學與技術教材)[M].2012.

[2]杜少杰,王文紅.C#程序設計案例教材[M].2010.

[3]胡湘萍.C#中接口與抽象類的應用辨析[J].2010.

毛廣敏(1978—),女,江蘇沭陽人,宿遷經貿高等職業技術學校講師。

猜你喜歡
方法
中醫特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數學教學改革的方法
河北畫報(2021年2期)2021-05-25 02:07:46
化學反應多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 天天色天天操综合网| 亚洲综合九九| 国产综合网站| 国产尤物jk自慰制服喷水| 午夜福利在线观看成人| 国产精品视频3p| 亚洲视频二| 自慰高潮喷白浆在线观看| a级高清毛片| 亚洲AV无码一区二区三区牲色| 亚洲美女一区| 国模在线视频一区二区三区| 狼友视频国产精品首页| 毛片a级毛片免费观看免下载| 久久久噜噜噜久久中文字幕色伊伊| 欧美精品啪啪一区二区三区| 欧洲熟妇精品视频| 男人天堂亚洲天堂| 婷婷激情五月网| 青青青国产免费线在| 九九九九热精品视频| 狼友av永久网站免费观看| 精品欧美一区二区三区在线| 毛片大全免费观看| 99青青青精品视频在线| 91网址在线播放| 精品国产一二三区| a毛片在线免费观看| 国产精品白浆无码流出在线看| 91精品久久久久久无码人妻| 无码内射在线| 亚洲制服丝袜第一页| 国产无码精品在线播放| 国产91精品久久| 91精品专区| a级毛片毛片免费观看久潮| 国产在线拍偷自揄观看视频网站| 久久国产乱子伦视频无卡顿| 国产免费观看av大片的网站| JIZZ亚洲国产| av天堂最新版在线| 91精品人妻互换| 国产91视频免费观看| 国产手机在线ΑⅤ片无码观看| 无码'专区第一页| 亚洲无码高清一区二区| 青青青国产在线播放| 国产自在线播放| 在线播放精品一区二区啪视频| 欧美日韩一区二区在线播放| 日本色综合网| 中文国产成人久久精品小说| 香蕉精品在线| 国产精品专区第1页| 国产精品香蕉| 国产亚洲一区二区三区在线| 热久久综合这里只有精品电影| A级毛片无码久久精品免费| 无码中字出轨中文人妻中文中| 波多野结衣一区二区三区四区视频 | 日韩精品一区二区三区免费在线观看| 久久婷婷人人澡人人爱91| 日韩一级二级三级| 亚洲国产黄色| 青青草a国产免费观看| 亚洲精品天堂自在久久77| 综合色天天| 无码一区二区波多野结衣播放搜索| 1级黄色毛片| 伊伊人成亚洲综合人网7777| 四虎在线观看视频高清无码| 老司机久久99久久精品播放 | 精品国产亚洲人成在线| 国产清纯在线一区二区WWW| 久久精品电影| 亚洲有码在线播放| 91精品国产麻豆国产自产在线| 国产精品19p| 综合网天天| 日本国产精品一区久久久| 国产小视频网站| 国产精品亚洲а∨天堂免下载|