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

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

 更新時間:2019年01月22日 08:36:21   作者:Mogul1  
今天小編就為大家分享一篇關于解析在C#中接口和類的異同,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

不同點:

不能直接實例化接口。

接口不包含方法的實現。

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

類定義可以在不同的源文件之間進行拆分。

相同點:

接口、類和結構都可以從多個接口繼承。

接口類似于抽象基類:繼承接口的任何非抽象類型都必須實現接口的所有成員。

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

接口只能定義方法。

1. 類

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

1.1 抽象類

關鍵字: abstract

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

特點:

    1.不能被實例化;ClassName en=new ClassName();//這樣會報錯。

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

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

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

    5.抽象成員的訪問修飾符不能是private。

    6.抽象類是有構造函數,雖然不能被實例化。

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

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

    9.抽象類也可以實現接口,但要把接口的成員前面標記個abstract。

1.2 密封類

關鍵字:sealed

使用目的:不需要子類來繼承他。如 String;

特點:

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

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

1.3 靜態(tài)類

關鍵字: static

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

特點:

    1.相似于sealed與abstract使用。

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

2. 接口

關鍵字:interface

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

特點:

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

    2.接口中的方法不能有任何實現

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

    4.接口不能被實例化

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

    6.類不能多繼承,所以在某些情況下,只能用接口來代替。接口可以多實現(一個類可以繼承多個接口,而只能繼承一個類)

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

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

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

    10.當父類實現接口,子類繼承父類。那么 接口就可以引用子類

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

    12.實現接口方法的時候,不要有override關鍵字,直接跟平常定義一樣

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

總的來說,接口和抽象類是.Net為了更好的實現類型之間繼承關系而提供的語言手段,而且兩者有些相輔相成的關系。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

相關文章

  • 淺談C# winForm 窗體閃爍的問題

    淺談C# winForm 窗體閃爍的問題

    下面小編就為大家?guī)硪黄獪\談C# winForm 窗體閃爍的問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C#使用遠程服務調用框架Apache Thrift

    C#使用遠程服務調用框架Apache Thrift

    這篇文章介紹了C#使用遠程服務調用框架Apache Thrift的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • KMP算法的C#實現方法

    KMP算法的C#實現方法

    這篇文章主要介紹了KMP算法的C#實現方法,代碼簡潔實用,需要的朋友可以參考下
    2014-09-09
  • C#向數據庫中插入或更新null空值與延遲加載lazy

    C#向數據庫中插入或更新null空值與延遲加載lazy

    這篇文章介紹了C#向數據庫中插入或更新null空值與延遲加載lazy,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的方法

    C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的方法

    某論壇的評論區(qū)模塊,發(fā)現這功能很不錯,琢磨了一晚上做了大致一樣的,用來當做 注冊模塊 的頭像綁定功能,下面通過實例代碼給大家介紹下C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的方法,感興趣的朋友一起看看吧
    2021-11-11
  • 詳解使用C#編寫SqlHelper類

    詳解使用C#編寫SqlHelper類

    本篇文章主要介紹了使用C#編寫SqlHelper類,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Unity3D Shader實現鏡子效果

    Unity3D Shader實現鏡子效果

    這篇文章主要為大家詳細介紹了Unity3D Shader實現鏡子效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Unity 點擊UI與點擊屏幕沖突的解決方案

    Unity 點擊UI與點擊屏幕沖突的解決方案

    這篇文章主要介紹了Unity 點擊UI與點擊屏幕沖突的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#通過屬性名字符串獲取、設置對象屬性值操作示例

    C#通過屬性名字符串獲取、設置對象屬性值操作示例

    這篇文章主要介紹了C#通過屬性名字符串獲取、設置對象屬性值操作,結合實例形式總結分析了C#通過反射獲取對象屬性值并設置屬性值,獲取對象的所有屬性名稱及類型等相關操作技巧,需要的朋友可以參考下
    2020-03-03

最新評論