1.基本概念
接口是一種契約規范,類似於抽象基類。包括方法,屬性,索引器和事件作為成員,這些成員只是作為定義,並不在接口中具體實現。
接口創建時注意以下事項:
- 繼承接口的任何非抽象類都必須實現接口的所有成員
- 不能直接實例化接口
- 接口可以包含事件,索引器,屬性和方法,不包括方法的實現
- 類和結構可從多個接口繼承,中間用“,”隔開
- 接口自身可從多個接口繼承
接口聲明格式如下
修飾符 interface 接口名稱:繼承接口列表(非繼承接口可省去該部分)
{
接口內容:屬性,方法,索引器,事件
}
2.使用實例
如定義一個信息類接口,包含編碼和名稱屬性及信息顯示方法。
通過銷售類信息和進貨類信息繼承該接口。
整個文檔接口如下:
- 接口定義
1 namespace CSCOMExample 2 { 3 public interface Informatioin 4 { 5 string Code { get; set; } //編碼屬性 6 string Name { get; set; }//名稱屬性 7 void ShowInfo();//輸出信息方法 8 } 9 10 }
- 進貨類
1 namespace CSCOMExample 2 { 3 4 /// <summary> 5 /// 進貨信息繼承接口 6 /// </summary> 7 public class JHInfo : Informatioin //繼承接口 8 { 9 string code = ""; 10 string name = ""; 11 /// <summary> 12 /// 實現編碼屬性 13 /// </summary> 14 public string Code 15 { 16 get { return code; } 17 set { code = value; } 18 } 19 /// <summary> 20 /// 實現名稱屬性 21 /// </summary> 22 public string Name 23 { 24 get { return name; } 25 set { name = value; } 26 } 27 /// <summary> 28 /// 實現進貨顯示信息方法 29 /// </summary> 30 void Informatioin.ShowInfo() 31 { 32 Console.WriteLine("進貨信息:\n" + Code + " " + Name); 33 } 34 } 35 }
- 銷售類
1 namespace CSCOMExample 2 { 3 /// <summary> 4 /// 銷售信息繼承接口 5 /// </summary> 6 public class XSInfo : Informatioin //繼承接口 7 { 8 string code = ""; 9 string name = ""; 10 /// <summary> 11 /// 實現編碼屬性 12 /// </summary> 13 public string Code 14 { 15 get { return code; } 16 set{code =value; } 17 } 18 /// <summary> 19 /// 實現名稱屬性 20 /// </summary> 21 public string Name 22 { 23 get{return name; } 24 set { name=value; } 25 } 26 /// <summary> 27 ///銷售信息顯示方法 28 /// </summary> 29 void Informatioin.ShowInfo() 30 { 31 Console.WriteLine("銷售信息:\n" + Code + " " + Name); 32 } 33 } 34 }
以上,分別在JHInfo類和XSInfo類中對接口的屬性和方法進行了實現。如此,一個信息接口Information就完成了。
再做一個測試程序,檢測接口:
1 namespace ComText 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 Informatioin[] Infos = { new JHInfo(), new XSInfo() };//定義接口數組 8 Infos[0].Code = "JH0001"; 9 Infos[0].Name = "筆記本電腦"; 10 Infos[0].ShowInfo(); 11 12 Infos[1].Code = "XS0001"; 13 Infos[1].Name = "榮耀手機"; 14 Infos[1].ShowInfo(); 15 Console.ReadLine(); 16 } 17 } 18 }
輸出結果如下: