(轉)C#Interface簡介

接口:描述可屬於任何類或結構的一組相關功能,經過interface關鍵字來聲明;
接口只包含方法、委託或事件和屬性的簽名(接口包含的成員)、不能包含字段(由於字段是包含數據的)。方法的實現是「繼承」接口的類中完成的;
接口能夠包含的成員的訪問修飾符只能且 默認爲public
一個接口能夠從一個或多個基接口繼承;
接口相似於抽象基類:繼承接口的任何非抽象類型都必須實現接口的全部成員;
當基類型列表包含基類和接口時,基類必須是列表中的第一項;
實現接口的類能夠顯式實現該接口的成員,顯示實現的成員不能經過類實例訪問,而只能經過接口實例訪問;
類和結構能夠按照類繼承基類或結構的相似方式繼承接口;但注意:
類或結構可繼承多個接口;
類或結構繼承接口時,僅繼承方法名稱和簽名,由於接口自己不包含實現;
接口和接口成員是抽象的(但不用寫出abstract關鍵字);接口不提供默認實現;
接口是一種規劃(爲你定義出一系列的規則和任務,但不去實現它)
下面的例子很好的說明了這點:
    interface IMyInt//定義一個接口:通信工具的接口
    {
        string Name//包含只讀字段的通信工具名屬性
        {
            get;
        }
        string Number//通信工具的號碼屬性
        {
            get;
            set;
        }
    }
    public class Tel : IMyInt//固定電話類型
    {
        string name = "固定電話";
        string number;
        //對接口中Name和Number的實現
        public string Name
        {
            get { return name; }
        }
        public string Number
        {
            get
            {
                return number;
            }
            set
            {
                number = value;
            }
        }
    }
    public class Phone : IMyInt//移動電話類型
    {
        string name = "移動電話";
        string number;
        public string Name
        {
            get { return name; }
        }
        public string Number
        {
            get
            {
                return number;
            }
            set
            {
                number = value;
            }
        }
    }
    public class Fax : IMyInt//傳真機類型
    {
        string name = "傳真機";         string number;         public string Name         {             get { return name; }         }         public string Number         {             get             {                 return number;             }             set             {                 number = value;             }         }     }     public class Program     {         static List<IMyInt> list = new List<IMyInt>();//存放IMyInt接口的列表集合;         static string select = " ";//選擇變量         static void AddNum(IMyInt myint)//添加號碼的方法;注意:此處參數的類型是IMyInt,這樣不管添加的是Tel、Phone、Fax類型,                                        //均可以向list裏面添加;即:好型接口提供了一個模糊的模型,知足這個模型的繼承了這個接                                        //口的類型均可以做爲參數;         {             list.Add(myint);         }         static void Main()//程序的入口點Main         {             for (int i = 0; i < 3; i++)             {                 string num = "";                 Console.WriteLine("一、Fax");                 Console.WriteLine("二、Phone");                 Console.WriteLine("三、Tel");                 select = Console.ReadLine();                 Console.Write("輸入添加的號碼");                 if (select == "1")                 {                     Fax f = new Fax();                     num = Console.ReadLine();                     f.Number = num;                     AddNum(f);//AddNum方法的調用                 }                 if (select == "2")                 {                     Phone p = new Phone();                     num = Console.ReadLine();                     p.Number = num;                     AddNum(p);                 }                 if (select == "3")                 {                     Tel t = new Tel();                     num = Console.ReadLine();                     t.Number = num;                     AddNum(t);                 }             }             for (int i = 0; i < list.Count; i++)             {                 Console.WriteLine("name:{0};number:{1}", list[i].Name, list[i].Number);             }             Console.ReadLine();         }     }
相關文章
相關標籤/搜索