接口:描述可屬於任何類或結構的一組相關功能,經過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(); } }