C# 接口的作用浅谈举例(转)
轉:http://blog.csdn.net/liuqinghui1990/article/details/77171051
?我初次接觸接口(Interface),對接口的作用有點迷茫,C#接口中包含方法、屬性、索引器和事件的聲明,但常用的接口中一般就是方法和屬性,然而接口中并沒有方法的具體實現代碼(不能提供任何成員實現),只有方法的返回類型和方法名。一個類實現了某個接口,則必須在類中包含接口中所有方法的實現代碼,換句話說就是,繼承自接口的類中必須包含接口中函數的實現代碼。
? ? ? ? 說到這里,可能就可以看出接口的一個作用,可以對繼承自接口的類起到約束作用,下面通過一個簡單的例子來說明。這個例子是《C#高級編程》這本書上的,我稍微改動擴展了下。
舉例:
大家都知道銀行賬戶有很多種,像學生時代的我們一般都是儲蓄卡(具有存錢、取錢、查詢余額等功能),工作后有錢了可能辦個黃金卡、白金卡什么的,發財了可能會升級為鉆石卡等,那么一個銀行賬戶相當于一個類,這些不同等級的銀行賬戶都具有一些共同的基本功能(存錢、取錢等),然而等級高的賬戶還有一些額外功能來提升銀行的服務水平,所以這些賬戶類中既有共同的函數,又具有差異性。
建立一個控制臺應用項目(InterfaceTest2),在Program.cs中定義一個接口1,這個接口是所以銀行賬戶必須實現的接口,包含最基本的功能。
?
[csharp]?view plain?copy下面定義一個普通的屌絲銀行賬戶類(儲蓄賬戶),命名為SaverAccount,這個屌絲賬戶顯然必須要實現接口1,因為接口1中的功能是銀行規定的所以賬戶都要有的。
?
?
[csharp]?view plain?copy從屌絲賬戶中可以看出,SaverAccount類實現了所有繼承自接口IBankAccount的方法,不然編譯會報錯。普通賬戶有存錢(PayIn)、取錢(Withdraw)和獲取賬戶余額的方法,具體方法很簡單,不在細說。
?
?
下面再定義一個接口2,接口2中包含有高級銀行賬戶的一些額外功能。
?
[csharp]?view plain?copy接著定義一個金卡賬戶,顯然,這個金卡賬戶必須實現接口1,同時還要有體現自身價值的其他方法,就是實現接口2。
?
?
[csharp]?view plain?copy由金卡賬戶類GoldAccount可以看出,除了具有屌絲賬戶類SaverAccount所具有的存錢、取錢、查詢余額的功能外,還具有一些金卡賬戶彰顯尊貴身份的獨特功能,那就是DealStartTip()和DealStopTip(),提示用戶注意安全的高級功能。
?
?
下面是整個項目的代碼,當然這里為了方便將接口和類都寫在了一起。
?
[csharp]?view plain?copy?
?
由程序的入口處可以看出,屌絲用戶sa只能存錢、取錢和查看余額,感覺很傻。金卡用戶ga還能在交易開始和結束的時候收到銀行額外的關懷(提示用戶注意安全)。
由此可以想到,首先接口具有約束作用,可以限定類必須實現某些功能;其次,接口減少了代碼量,便于擴展,比如銀行 賬戶等級越高,所具有的功能就越多(實現更多的接口);再次,規范多個開發人員的代碼,比如屌絲賬戶類由程序猿A來寫,金卡賬戶類由程序猿B來寫,那么我告訴AB這兩個賬戶都要實現接口1,則A、B寫的類中相同函數的函數名稱就一致了。
Over,感覺說的很詳細了,睡覺!
?
轉載于:https://www.cnblogs.com/dare/p/8565444.html
總結
以上是生活随笔為你收集整理的C# 接口的作用浅谈举例(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ompl_interface/OMPLP
- 下一篇: [日常工作]偷懒创建一个存储过程进行模拟