寫在前面:新手入行,讀者勉強看看吧,寫的不對的歡迎討論,板磚輕拍!
一.定義
接口描述的是可屬於任何類或結構的一組相關功能,所以實現接口的類或結構必須實現接口定義中指定的接口成員。
通常用Interface關鍵字進行定義。
接口內部只包含方法名,屬性等,不含任何訪問修飾符。
二.疑問
很多像筆者這樣的新手在看到接口的定義及作用后都會產生疑問:接口內部方法只有方法名我們何必去繼承這個接口呢?完全可以在應用方法的類里寫一個方法調用嘛,何必多此一舉呢?
每個繼承的類的方法內部代碼依然也是不一樣,繼承時如果不寫全繼承的方法還會報錯,還不如每個類自己寫個方法解決呢。
這個問題讓我整整找了一天的答案,如下是筆者見解。
三.代碼實例
做個和銀行存取款相關的實例,有這樣三個銀行:建行,工行,農行,有個公民同時有這三個銀行的賬號。
先建個接口IBank
public interface IBank { string Name { get; set; } int Count { get; set; } int InMoney(int money); int OutMoney(int money); }
然后分別建立三個銀行的類,繼承自IBank
class ICBCBank:IBank { private string name; public string Name { get { return name; } set { name = value; } } private int count; public int Count { get { return count; } set { count = value; } } public int InMoney(int money) { count += money; return count; } public int OutMoney(int money) { count -= money; return count; } }
其他兩個類似這個,就不寫了。內部包含Name和Count兩個屬性與InMoney,OutMoney兩個存取錢方法。
IBank banker; banker = new ICBCBank { Name = "ICBCBank", Count = 100 }; DrawMoney(banker); banker = new CCBBank { Name = "CCBBank", Count = 200 }; DrawMoney(banker); banker = new ABCBank { Name = "ABCBank", Count = 300 }; DrawMoney(banker); private void DrawMoney(IBank banker) { banker.OutMoney(10); text01.Text+=banker.Name+" "+ banker.Count.ToString()+"\n"; }
通過接口建立banker,該公民具有三個銀行的賬戶,每次只要將其轉換到某一銀行去之后,即可對其在該銀行內的賬戶進行取錢動作。
在下面DrawMoney動作中,傳入參數類型為IBook,可以傳入任何銀行的參數,大大方便的操作處理。
假如該公民再有其他銀行賬戶時,增加該銀行類,繼承IBank即可,改動很小。
四.實例下載