首先聲明一點,我是個編程初學者,同時也是一個視編程如藝術的追求者,這篇博文是我課余時間撰寫的,鄙人水平有限,但我還是想把我對接口的理解說出來,僅希望能給一些尚未了解它的人的一絲指引,首次寫博文,希望大家能諒解我的不足並給予指正。
接口的概念及聲明
1.接口是一種用來定義程序的協議。
2.接口可以是命名空間或類的成員,並且可以包含下列成員的簽名:方法、屬性、索引器、事件。
3.接口可以繼承其它一個或多個接口,一個類可以繼承或實現多個接口。
4.實現接口的非抽象類必須實現其內部聲明的成員。
5.不能顯示給接口成員賦予訪問修飾符,所有接口成員的默認訪問類型都是public。
6.實現接口的類可以顯式實現該接口的成員。顯式實現的成員不能通過類實例訪問,而只能通過接口實例訪問。
對接口的理解
1.接口中所有成員都是虛的,為什麼說是虛的呢,因為接口內部只包含成員的聲明部分,具體怎麼實現都不是接口要關心的,它只是作為一種規范存在。
2 接口的作用,簡而概之,就是標志類的類別。把不同類型的類歸於不同的接口,可以更好的管理他們。面向對象的的精髓,是將對象的進一步抽象,最能體現這一點的就是接口。
3.我們在做項目時經常會用到三層架構的思想,假如在BLL層定義了類A,在DAL層定義了類B,在類A中實例化類B的一個對象,並通過該對象完成操作。顯然,如果希望換一種數據訪問方式,很有可能要修改BLL層的代碼,因為在類A中實例化了類B的一個對象。如果使用接口,上層類就不能直接依賴下層類,而只依賴下層提供的一個接口,這就滿足了“松散耦合”的設計理念。
現在請允許我寫個例子來進一步探討
View Code我寫上面那個小例子的意圖是想說明一點:實現接口的非抽象類,必須實現該接口的所有成員。
單繼承我想大家都應該很容易就理解了,但是我想著重說下多繼承,如果類實現兩個接口,並且這兩個接口包含具有相同簽名的成員,那麼在類中實現該成員將導致兩個接口都使用該成員作為它們的實現。例如:
View Code但是,如果兩個接口成員執行不同的操作,這就有可能導致其中一個接口的實現不正確或兩個接口的實現都不正確。這就有了顯式地實現接口成員。這是使用接口名稱和一個英文句點命名該類成員來實現的。例如:
View Code正如上面代碼所明確的,類成員 Itest1.fun 只能通過 Itest1 接口使用,而Itest2.fun() 只能通過 Itest2 使用。這兩個方法是分別實現的,並且兩者都不可以直接在類中使用。
好吧就到這裡了,我知道還有很多關於接口的問題尚未提及,但是我的水平的確很次,第一次出來獻獻丑,不傷大雅.......