C#語法之定義接口和抽象類

       抽象類是abstract修飾符用於表示所修飾的類是不完整的,並且只能用做基類。抽象類和非抽象類的不同點:

     抽象類不能直接實例化。雖然一些變量和值編譯時類型可以是抽象的,但是這樣的變量和值必須爲null,或者含有對非抽象類的實例的引用(此非是從抽象派生出的)。

   當從抽象派生非的時候,這些非必須具體實現所繼承所有的抽象成員,從而重寫那些抽象成員。

     abstract class A

      { publish abstract void F();}

    abstract class B:A            B爲抽象類,所有他不用提供F的實現

      {public void G();}               

      class C:B                         C繼承A B的所有抽象成員,並且提供一個具體實現

       {

      publish override void F()

     {//actual implementation of F}

       }

     由於C中沒有抽象成員,所以可以,但不是必須將C聲明爲非抽象類。

          接口

接口可以擁有靜態成員、嵌套類型、抽象、虛擬成員、屬性和事件。實現接口的任何類都必須提供所聲明的抽象成員的定義。

他和抽象類的區別:

1) 接口不能有非抽象方法,但抽象類可以

2)一個類可以實現多個接口,但只能有一個父類

3)接口不屬於繼承結構,他實際於繼承無關,因此無關的類也可以實現同一個接口

4)抽象類是一個不完整的類,需要進一步細化;而接口只是個行爲的規範

5)接口基本不具備任何基本特點,他只是承諾了能調用的方法

6)接口可以支持回調,但是繼承不行。用於回調的接口只是提供指向方法的指針,而且是類型安全的指針方法。

 

發佈了23 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章