C# Interface

1.Interface 定義結構函數

1 [attributes] [access-modifiers] interface interface-name [:base-inteface-list] 
2 { 
3        interface body 
4 }

[attributes] 性質 (可選項);spa

[access-modifiers] 訪問修飾符 (可選項);//public  internal  private   protected  protected internal;code

interface-name 接口名  (習慣以大寫 I 開頭);blog

[:base-inteface-list] 接口基類列表 (可選項);繼承

interface body  接口主體(不能有訪問修飾符);//只是定義接口的方法和屬性等的簽名;接口

                       //實際的實現是寫在使用該接口的class裏;string

 

 

1 //Define an Interface
2 public interface IStorable
3 {
4     void Read( ); //不能有access-modifier
5     void Write(object);//只是簽名,沒有具體內容
6 }

類繼承接口it

1 public class Document : IStorable // 繼承IStorable接口
2 {
3     public void Read( ) {...} //能夠有access-modifier
4     public void Write(object obj) {...} // 寫出具體的實現內容
5     // ...
6 }

一個類繼承多個接口class

 1 public interface IStorable
 2 {
 3     void Read( );
 4     void Write(object);
 5 }
 6 
 7 interface ICompressible
 8 {
 9     void Compress();
10     void Decompress();
11 }
12 
13 public class Document : IStorable, ICompressible // 繼承多個接口的列表
14 {
15     //實現IStorable
16     public void Read( ) {...} //寫出具體的實現內容
17     public void Write(object obj) {...}
18     // 實現ICompressible
19     public void Compress(){ …}
20     public void Decompress() { …}
21 }

 

接口繼承接口object

 
 
interface ICompressible
{
    void Compress();
    void Decompress();
}
interface ILoggedCompressible 
: ICompressible  // 接口 ILoggedCompressible繼承 接口ICompressible
{
    void LogSavedBytes();
}

public class Document : ILoggedCompressible 
{
    // 實現ICompressible
    public void Compress(){ …}
    public void Decompress() { …}
    // 實現ILoggedCompressible 
    public void LogSavedBytes() { …}  // 要實現全部的接口成員
}
 
 

 

 

 

顯式定義與隱式定義

 1  interface IStorable
 2  {
 3        void Read();
 4        void Write();
 5  }
 6  interface ITalk
 7  {
 8         void Talk();
 9         void Read();
10  }
11  public class Document : IStorable, ITalk
12  {
13     public Document(string s)
14      {…; }
15      // Make read virtual   定義爲虛函數
16      public virtual void Read() //Istorable的Read方法爲 隱式定義
17      {…; }            
18      public void Write()
19      {…; }
20      void ITalk.Read()  // ITalk的 Read方法 爲 顯式定義  不能有 訪問修飾符  隱式爲public
21      { …; }
22      public void Talk() //不須要顯式定義
23      { …; }
24 }    

顯式定義與隱式定義的調用

  1 public class Document : IStorable, ITalk

2 {
 3     public void Read()  4  { …; } …  5     void ITalk.Read()  6  { …; }  7 }  8 
 9  Document theDoc = new Document(「Test」); 10 theDoc.Read();   //調用隱式定義的Read()
11 12 ITalk itDoc = theDoc; // 轉換爲interface 13 itDoc.Read(); //調用顯式定義的Read()
相關文章
相關標籤/搜索