Interface是C#裡相當重要的概念,它可以完成多型,讓我們方便維護,本篇整理寫介面時的基本規則,如下:
- Interface 會要求繼承的類別(class)必須實作interface裡面定義的方法,建議使用 I 開頭定義
- Interface介面是不存放資料的,因此不能增加欄位(field),但可以增加特性(property),理由是set和get存取器只是方法
- Interface內的東西都是公用(public)的
X=> Iobj i1 = new Iobj();
O=> Iobj[] i1 = new Iobj[3]; - 無法實例化一個介面(interface),但可以建立介面陣列(interface[])參考
- Interface refference like Object refference,
介面參考就像物件參考一樣會讓物件持續存活
Iojb i1 = new obj();//但介面參考只能使用介面內所宣告的方法與屬性,
obj i1 = new obj();//物件可使用屬於自己與繼承interface的方法與屬性 - 可以用 is (關鍵字)來確定介面或其他型別,
ex:(obj1 is Iobj)=>true or false//表示obj是否為介面Iobj的實作 - 可以用 as (關鍵字)來轉型成為其他介面或型別,
ex:if(obj1 is Iobj)Iobj obj2 = obj1 as Iobj;
//前面為檢查介面是否型別可轉,確定後就使用as關繼字轉型,
若轉型失敗則傳回null,成功就可以使用Iobj的方法與特性 - 在介面(interface)中放置特性(property),在實作介面後可以自行改寫,
只要有實作原介面設定的存或取(get or set),
ex: 原來public job{get;}=>實作後public job{get;private set;//自己加set並設為私有的} - 介面繼承介面只會累積所繼承的方法與特性,除了實作自己的特性與方法還要實作繼承來的特性與方法
- 任何類別均可實作任何介面,只要他信守實作該介面所有的方法與特性的承諾
- Interface可以向上轉型也可向下轉型,使用is來判別後再使用as來轉型,但是向上轉型後就只能使用父類別的方法與特性