天天看點

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)接口可以支援回調,但是繼承不行。用于回調的接口隻是提供指向方法的指針,而且是類型安全的指針方法。

繼續閱讀