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()