欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#抽象類和接口的區(qū)別分析

 更新時(shí)間:2014年10月22日 08:58:26   投稿:shichen2014  
這篇文章主要介紹了C#抽象類和接口的區(qū)別,詳細(xì)的分析了抽象類與接口的概念與特性,并對(duì)二者作出比對(duì)說(shuō)明,需要的朋友可以參考下

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

一、抽象類:

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

二、接口:

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

接口有如下特性:

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

兩者的語(yǔ)法區(qū)別:

1.抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。

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

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

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

5. 抽象類中可以包含靜態(tài)方法,接口中不能包含靜態(tài)方法

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

7. 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類。

8.接口可以用于支持回調(diào),而繼承并不具備這個(gè)特點(diǎn).    9.抽象類實(shí)現(xiàn)的具體方法默認(rèn)為虛的,但實(shí)現(xiàn)接口的類中的接口方法卻默認(rèn)為非虛的,當(dāng)然您也可以聲明為虛的. 

抽象類和接口的使用:

1.如果預(yù)計(jì)要?jiǎng)?chuàng)建組件的多個(gè)版本,則創(chuàng)建抽象類。抽象類提供簡(jiǎn)單的方法來(lái)控制組件版本。
2.如果創(chuàng)建的功能將在大范圍的全異對(duì)象間使用,則使用接口。如果要設(shè)計(jì)小而簡(jiǎn)練的功能塊,則使用接口。
3.如果要設(shè)計(jì)大的功能單元,則使用抽象類.如果要在組件的所有實(shí)現(xiàn)間提供通用的已實(shí)現(xiàn)功能,則使用抽象類。
4.抽象類主要用于關(guān)系密切的對(duì)象;而接口適合為不相關(guān)的類提供通用功能。
5.好的接口定義應(yīng)該是具有專一功能性的,而不是多功能的,否則造成接口污染。如果一個(gè)類只是實(shí)現(xiàn)了這個(gè)接口的中一個(gè)功能,而不得不去實(shí)現(xiàn)接口中的其他方法,就叫接口污染。

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C#異步任務(wù)延續(xù)的三種底原理解析(最新推薦)

    C#異步任務(wù)延續(xù)的三種底原理解析(最新推薦)

    這篇文章主要介紹了C#異步 任務(wù)延續(xù)的三種底層玩法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-05-05
  • C# datagrid非常規(guī)方法實(shí)現(xiàn)添加合并列

    C# datagrid非常規(guī)方法實(shí)現(xiàn)添加合并列

    這篇文章主要介紹了C# datagrid非常規(guī)方法實(shí)現(xiàn)添加合并列,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • C#實(shí)現(xiàn)實(shí)時(shí)監(jiān)控文件夾變化

    C#實(shí)現(xiàn)實(shí)時(shí)監(jiān)控文件夾變化

    在開發(fā)各種應(yīng)用程序時(shí),我們經(jīng)常需要對(duì)文件系統(tǒng)中的文件或文件夾進(jìn)行實(shí)時(shí)監(jiān)測(cè),下面就跟隨小編一起來(lái)看看具體如何使用C#實(shí)現(xiàn)這一功能吧
    2024-03-03
  • Unity鍵盤WASD實(shí)現(xiàn)物體移動(dòng)

    Unity鍵盤WASD實(shí)現(xiàn)物體移動(dòng)

    這篇文章主要為大家詳細(xì)介紹了Unity鍵盤WASD實(shí)現(xiàn)物體移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#中實(shí)現(xiàn)線程同步lock關(guān)鍵字的用法詳解

    C#中實(shí)現(xiàn)線程同步lock關(guān)鍵字的用法詳解

    實(shí)現(xiàn)線程同步的第一種方式是我們經(jīng)常使用的lock關(guān)鍵字,它將包圍的語(yǔ)句塊標(biāo)記為臨界區(qū),這樣一次只有一個(gè)線程進(jìn)入臨界區(qū)并執(zhí)行代碼,接下來(lái)通過(guò)本文給大家介紹C#中實(shí)現(xiàn)線程同步lock關(guān)鍵字的用法詳解,一起看看吧
    2016-07-07
  • 深入理解C#窗體關(guān)閉事件

    深入理解C#窗體關(guān)閉事件

    很多初學(xué)者都想把默認(rèn)的C#關(guān)閉按鈕事件弄明白,本文就介紹一下C#窗體關(guān)閉事件,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • vs2019 實(shí)現(xiàn)C#調(diào)用c++的dll兩種方法

    vs2019 實(shí)現(xiàn)C#調(diào)用c++的dll兩種方法

    這篇文章主要介紹了vs2019 實(shí)現(xiàn)C#調(diào)用c++的dll兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C#線程倒計(jì)時(shí)器源碼分享

    C#線程倒計(jì)時(shí)器源碼分享

    這篇文章主要為大家分享了C#線程倒計(jì)時(shí)器源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C#通過(guò)yield實(shí)現(xiàn)數(shù)組全排列的方法

    C#通過(guò)yield實(shí)現(xiàn)數(shù)組全排列的方法

    這篇文章主要介紹了C#通過(guò)yield實(shí)現(xiàn)數(shù)組全排列的方法,以實(shí)例形式較為詳細(xì)的分析了全排列的概念及C#的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Unity使用LineRender實(shí)現(xiàn)簽名效果

    Unity使用LineRender實(shí)現(xiàn)簽名效果

    這篇文章主要為大家詳細(xì)介紹了Unity使用LineRender實(shí)現(xiàn)簽名效果,制作簽名功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評(píng)論