程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#—接口 PK 抽象類

C#—接口 PK 抽象類

編輯:C#入門知識

C#—接口 PK 抽象類


  面向對象的特點之一就是抽象,說道抽象就不得不提一下抽象類和接口,那麼抽象類和接口是什麼、又有什麼關系和區別?讓我們來探討一下。

首先看一下百度百科的解釋:

  抽象類:面向對象中,所有對象都是通過類來描繪的,但是反過來,並不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。

  接口:程序接口,由一套陳述、功能、選項、其它表達程序結構的形式、以及程序師使用的程序或者程序語言提供的數據組成。

定義方法:

  抽象類:

啊

  接口:

啊

 

  定義時需要注意的:

    1)抽象類中含有抽象方法,定義時必須用abstract關鍵字修飾,且抽象類不能實例化。

    2)抽象類中可以包含非抽象的普通方法及構造方法;接口中的所有方法必須是抽象的。

    3)抽象類中的抽象方法的訪問類型可以是public,protected;接口中的抽象方法只能是public類型的,並且默認即為public abstract類型。

    4)抽象類中可以包含靜態方法;接口中不能包含靜態方法。

我的理解:

  1)抽象類可以提供方法的具體實現,當抽象類的子類繼承抽象類之後,會得到這些方法;接口只能提供方法名稱而不能夠寫出具體實現,如果寫出具體實現,實現接口的類在編譯階段就會報錯,換句話說,實現接口的類都要寫一遍接口方法的實現。

  2)由於C#中的單繼承,一個類只能繼承一個抽象類,一個類作為類型定義工具是有局限性的;而對於接口就不一樣的,C#中允許一個類實現多個接口,而多個接口可以是不同類型的,所以實現多個接口的類就能有了多種類型。

  3)接口把“做什麼”和“怎麼做”分開了,這就是實現了解耦合,具體是解了方法和實現方法的類之間的耦合,這給程序的可維護性增強了,這是接口的一大好處。

 

  4)簡單來說,接口是public的,是讓別人使用的,所以接口不能有私有的屬性和方法;抽象類可以有私有屬性和方法。

  5)抽象類之所以稱作抽象類,是因為其中有抽象方法,而且抽象方法必須由abstract關鍵字修飾;接口中的方法就不需要關鍵字來修飾。

  6)在缺省適配模式中,將接口放在頂層,下邊為抽象類,可以同時結合接口和抽象類的優點,方便使用。

 

小結:抽象類和接口一定程度上具有相似性,在實際學習中我們要對比著去學習。

 

1

 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved