解析在C#中接口和類的異同

不同點(diǎn):

為邳州等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及邳州網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、邳州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

不能直接實(shí)例化接口。

接口不包含方法的實(shí)現(xiàn)。

接口可以多繼承,類只能單繼承。

類定義可以在不同的源文件之間進(jìn)行拆分。

相同點(diǎn):

接口、類和結(jié)構(gòu)都可以從多個(gè)接口繼承。

接口類似于抽象基類:繼承接口的任何非抽象類型都必須實(shí)現(xiàn)接口的所有成員。

接口和類都可以包含事件、索引器、屬性。

接口只能定義方法。

1. 類

類的分類有:抽象類(abstract)、密封類(sealed)、靜態(tài)類(static)

1.1 抽象類

關(guān)鍵字: abstract

使用目的:若所有子類擁有共同的特性,可以把這個(gè)特性放到一個(gè)抽象類中,子類繼承此抽象類。 

特點(diǎn):

    1.不能被實(shí)例化;ClassName en=new ClassName();//這樣會(huì)報(bào)錯(cuò)。

    2.抽象成員必須包含在抽象類中。

    3.抽象類除了抽象成員外,還可以包含別的成員(不用關(guān)鍵字 abstract)。

    4.子類繼承抽象父類后,必須把父類中的所有抽象成員都重寫(非抽象成員不必重寫)。除非子類也是個(gè)抽象類。

    5.抽象成員的訪問(wèn)修飾符不能是private。

    6.抽象類是有構(gòu)造函數(shù),雖然不能被實(shí)例化。

    7.abstract不能用于字段成員,可定義成屬性。

    8.abstract用于方法時(shí),方法不能定義主體(內(nèi)容)。

    9.抽象類也可以實(shí)現(xiàn)接口,但要把接口的成員前面標(biāo)記個(gè)abstract。

1.2 密封類

關(guān)鍵字:sealed

使用目的:不需要子類來(lái)繼承他。如 String;

特點(diǎn):

    1.不能被繼承,如:string ,不能被繼承。

    2.子類重寫后,前面加個(gè)sealed,那么子類就不能再被繼承。

1.3 靜態(tài)類

關(guān)鍵字: static

使用目的:不需要實(shí)例化,可以直接類名引用靜態(tài)方法。比如 工具類。

特點(diǎn):

    1.相似于sealed與abstract使用。

    2.靜態(tài)成員在整個(gè)程序退出時(shí)才釋放資源,所以盡量別寫靜態(tài)字段、屬性。最好是靜態(tài)方法。

2. 接口

關(guān)鍵字:interface

使用目的:抽象類所擁有的共性,也可以概括為:為了多態(tài)。

特點(diǎn):

    1.接口中只能包含方法。(方法、屬性、索引器、事件)

    2.接口中的方法不能有任何實(shí)現(xiàn)

    3.接口中的成員不能有任何訪問(wèn)修飾符(哪怕是public)

    4.接口不能被實(shí)例化

    5.實(shí)現(xiàn)接口的類,必須實(shí)現(xiàn)接口的所有成員(這里跟抽象類一樣)

    6.類不能多繼承,所以在某些情況下,只能用接口來(lái)代替。接口可以多實(shí)現(xiàn)(一個(gè)類可以繼承多個(gè)接口,而只能繼承一個(gè)類)

    7.接口的主要目的就是為了實(shí)現(xiàn)多態(tài)

    8.當(dāng)一個(gè)類,同時(shí)繼承了某個(gè)類,并且也實(shí)現(xiàn)了某些接口的時(shí)候,必須要將繼承的類寫在第一個(gè)(如果一個(gè)類同時(shí)繼承了父類和接口的時(shí)候,要把父類寫在最前面)

    9.當(dāng)多個(gè)類,都具有某個(gè)或某幾個(gè)功能時(shí)(方法),但是這幾個(gè)類型又不屬于相同的系列(這幾個(gè)類型沒(méi)有共同的父類,就不能用抽象類。),所以這時(shí),為了實(shí)現(xiàn)多態(tài)就可以考慮把這幾個(gè)類型共有的方法提取到一個(gè)接口中,讓這幾個(gè)類型分別實(shí)現(xiàn)該接口

    10.當(dāng)父類實(shí)現(xiàn)接口,子類繼承父類。那么 接口就可以引用子類

    11.不要在一個(gè)接口中寫過(guò)多的方法,避免造成接口污染??删帉懚鄠€(gè)接口,在每個(gè)接口中,分別定義方法

    12.實(shí)現(xiàn)接口方法的時(shí)候,不要有override關(guān)鍵字,直接跟平常定義一樣

    13.接口方法的顯示實(shí)現(xiàn),如果多個(gè)接口里有相同的方法名。那么第一個(gè)方法名默認(rèn)的引用的是排在最前面的接口,如果要使用后面接口的方法,就要顯示實(shí)現(xiàn):接口名.方法名。訪問(wèn)修飾符是private

解析在C#中接口和類的異同

總的來(lái)說(shuō),接口和抽象類是.Net為了更好的實(shí)現(xiàn)類型之間繼承關(guān)系而提供的語(yǔ)言手段,而且兩者有些相輔相成的關(guān)系。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

網(wǎng)站標(biāo)題:解析在C#中接口和類的異同
鏈接URL:http://bm7419.com/article14/pcdjge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、標(biāo)簽優(yōu)化關(guān)鍵詞優(yōu)化、微信公眾號(hào)、網(wǎng)站策劃網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)