c#介面

來源:互聯網
上載者:User

標籤:style   blog   color   ar   使用   sp   strong   檔案   div   

介面描述的是類或結構所描述的一組相關功能。

所以繼承此介面的類或結構必須實現介面中定義的所有成員。

介面使用interface關鍵字進行聲明,成員可以為屬性,方法,索引,事件。

介面的特性:

  1)、介面類似與抽象類別,不能執行個體化,實現介面的任何非抽象類別都必須實現介面的所有成員:

             當顯示實現成員時,實現成員不能通過類的對象訪問,只能通過介面執行個體訪問。

             當隱示實現成員時,可以通過類和介面的執行個體訪問,但是實現成員須是public。

  2)、介面不能包含欄位,常量,建構函式,解構函式和靜態成員等。

  3)、介面成員是公開的,且不需要任何的存取修飾詞。

  4)、介面,類和結構都可以繼承多個介面。

 1 interface IProgram 2     { 3         void Fun(); 4     } 5  6     class Program : IProgram 7     { 8         //顯示介面實現 9         void IProgram.Fun()10         {11             Console.WriteLine("i am fun.");12         }13         static void Main(string[] args)14         {15             IProgram i = new Program();//聲明一個介面,但不是對介面執行個體化16             i.Fun();17             Console.ReadKey();18         }19     }

隱式介面與顯示介面實現的區別:

 一般當類和結構實現單個介面時使用隱式介面。

而當要實現多個介面時,且介面中含有同名函數時就需要使用顯示介面。且使用了顯示介面隱式介面就失效了。

 1  interface IProgram 2     { 3         void Fun(); 4     } 5     interface IAPrograme{ 6      void Fun(); 7     } 8     class Program : IProgram,IAPrograme 9     {10         //顯示介面實現11         void IProgram.Fun()12         {13             Console.WriteLine("i am IProgram fun.");14         }15          void IAPrograme.Fun(){16              Console.WriteLine("i am IAPrograme fun.");17         } 18         //實現隱式介面19          //void Fun() { 20           21          //}22         static void Main(string[] args)23         {24             Program p = new Program();25             ((IProgram)p).Fun();26             ((IAPrograme)p).Fun();27             Console.ReadKey();28         }29     }

介面的繼承:

介面的繼承指的是繼承的父介面的所有成員,但是還是沒有實現。且允許多繼承。

 1 interface IProgram 2     { 3         void Fun(); 4     } 5     interface IAPrograme : IProgram 6     { 7  8     } 9     class Program : IProgram, IAPrograme10     {11         //顯示介面實現12         void IProgram.Fun()13         {14             Console.WriteLine("i am IProgram fun.");15         }16         //void IAPrograme.Fun()17         //{18         //    Console.WriteLine("i am IAPrograme fun.");19         //}20         //實現隱式介面21         //void Fun() { 22 23         //}24         static void Main(string[] args)25         {26             Program p = new Program();27             //((IProgram)p).Fun();28             ((IAPrograme)p).Fun();29 30             Console.ReadKey();31         }32     }

介面的覆蓋:

 1  interface IProgram 2     { 3         void Fun(); 4     } 5     abstract class IAProgram : IProgram 6     { 7         abstract public void AFun(); 8         void IProgram.Fun() 9         {10             AFun();11         }12     }13     class Program : IAProgram14     {15      16         public override void AFun()17         {18             Console.WriteLine("i am AProgram fun.");19         }20         static void Main(string[] args)21         {22             IProgram p = new Program();23             //((IProgram)p).Fun();24             p.Fun();25 26             Console.ReadKey();27         }28     }

先進行介面的實現,然後再調用抽象函數。

介面和抽象類別的區別。
介面用於規範,抽象類別用於共性。
介面中只能聲明方法,屬性,事件,索引器。而抽象類別中可以有方法的實現,也可以定義非靜態類變數。
抽象類別是類,所以只能被單繼承,但是介面卻可以一次實現多個。
抽象類別可以提供某些方法的部分實現,介面不可以。
抽象類別的執行個體是它的子類給出的。介面的執行個體是實現介面的類給出的。
在抽象類別中加入一個方法,那麼它的子類就同時有了這個方法。而在介面中加入新的方法,那麼實現它的類就要重新編寫(這就是為什麼說介面是一個類的規範了)。
介面成員被定義為公用的,但抽象類別的成員也可以是私人的、受保護的、內部的或受保護的內部成員(其中受保護的內部成員只能在應用程式的代碼或衍生類別中訪問)。
此外介面不能包含欄位、建構函式、解構函式、靜態成員或常量。
C#中的介面和類有什麼異同。
異:
不能直接執行個體化介面。
介面不包含方法的實現。
介面可以實現多繼承,而類只能是單繼承。
類定義可在不同的源檔案之間進行拆分。
同:
介面、類和結構可從多個介面繼承。
介面類似於抽象基類:繼承介面的任何非抽象類別型都必須實現介面的所有成員。
介面可以包含事件、索引器、方法和屬性。
一個類可以實現多個介面。

c#介面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.