對於很多初學者來說是個很容易迷糊的東西,使用起來很簡單,無非就是定義介面,介面裡麵包含一些屬性、索引器、事件和一些沒有修飾符的方法,也沒有方法的具體實現代碼;然後在類中繼承該介面,實現該介面中的所有屬性、索引器、事件和方法的具體實現的代碼(其實介面中只能這幾個,一般我們用到的只有屬性和方法所以在這裡我就只跟大家分享其中的一種“方法”)。介面的使用就這麼簡單,只要照著去寫代碼就行了;但沒有真正認識到介面的作用的人,都會感覺沒有用介面的必要;感覺多此一舉,在沒真正認識到介面的作用時我也是這麼認為的。
微軟不會把多此一舉的東西推出到市場上,哪麼接下來我們就來看看介面的妙處在哪裡。
我們先定義一個介面
public Interface IBase { void ClassPrind(string s); }
再定義一個類繼承於IBase介面,並且實現方法
public class DogClass :IBase { public void ClassPrind(string s) { Console.WriteLine(s); } }
最後我們在Main裡面調用他
class ClassMain { statric void Main(string []args) { IBase base=new DogClass(); base.ClassPrind("小狗"); } }
輸出結果
小狗
單從上面的代碼中看起確實多此一舉,我們只要執行個體化DogClass類在去調用ClassPrind方法就行了,沒必要多定義一個介面。但是如果我們要再寫多一個CatClass類,類裡也同樣要傳入一個參數輸出的方法呢?不錯我們只要寫多一個類,類裡寫多一個方法就行快的很;但我們在新寫的類中的方法名可能會不一樣,也就是說我們要多一個方法;這還不算什麼,如果這個類和方法你們專案經理是叫別人寫的話,你將不知道這個方法,我們使用起來就不方便了。但如果我們使用介面就不同了,雖然也還是要寫多一個類和一個方法;但我們只要把這個類繼承於介面,再實現他。哪麼不管是誰去新增這個類,我們都能準確的找到他,使用他。
我們來加上CatClass這個類
public class CatClass :IBase { public void ClassPrind(string s) { Console.WriteLine(s); } }
再看看調用和輸出
class ClassMain { statric void Main(string []args) { IBase base=new DogClass(); base.ClassPrind("小狗"); IBase base=new CatClass(); base.ClassPrind("小貓"); } }
輸出結果
小狗
小貓
從調用輸出中我們很明顯的看出我們只要改個類名、改個參數調用的結果就是別一個類中的方法,我們根本就不用去記別人寫的方法名是什麼,也不用寫這個類的人告訴我們這個類是寫來幹嘛的。這樣我們不管是在Team 專案中,還是在個人項目裡都很容易的擴充、大大提高了工作效率,我們也不用記住哪麼多的東西,何樂而不為呢。