亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

接口詳解

系統(tǒng) 2337 0

?

?

接口是把隱式公共方法和屬性組合起來,以封裝特定功能的一個集合。一旦定義了接口,就可以在類中實現(xiàn)它。這樣,類就可以支持接口所指定的所有屬性和成員。接口不能單獨存在;不能進行實例化(因為沒有必要實例化);接口不包括任何實現(xiàn)其成員的代碼而只定義了成員本身;成員的實現(xiàn)將在實現(xiàn)接口的類中實現(xiàn)。

以上是接口的書本定義,讀完基本不知所云。就知道了接口與類不一樣,接口與類都需要定義自身的成員,但接口不能實現(xiàn)成員的功能。我覺得可以簡單地說:接口是類的更高級抽象(類已經(jīng)是其所要實現(xiàn)的過程的抽象了),接口定義了類實現(xiàn)的規(guī)范。接口好像是事先定義好的備忘錄,提醒你,類需要有這些成員,需要完成這些功能。但是,不同的類,他們具體的實現(xiàn)方式則需要你單獨去定義了。

舉一個簡單的例子,我覺得很好很經(jīng)典。

接口詳解

正如圖中所示,我們定義了一個IHuman的接口,以及Student和Teacher兩個類。眾所周知,學(xué)生和老師都是人(雖然他們之間總是或多或少的存在著些許不可調(diào)和的矛盾)。因此,學(xué)生和老師都有年齡的屬性、同樣需要吃飯、睡覺...。

接口詳解

但是,幾乎可以確定的是,學(xué)生和老師是兩代人,他們之間有代溝,去完成作為一個人所必須完成的事情的時候,所采用的方式方法是不同的。同時,他們也有不同的行為。比如,一個30歲的副教授,想必已經(jīng)結(jié)婚,所以需要傳宗接代、孝敬父母、愛護祖國花朵、教書育人、賺錢糊口...。而學(xué)生呢,正值妙齡,血氣方剛,不甘寂寞,可想而知...

這樣做有什么好處呢?畢竟,沒有好處的事情是不會有人去做的。試想,我們沒有定義IHuman接口,而是分別定義了Student、Teacher類。有一天,一個想兒子想瘋了的家長突然出現(xiàn)在不知所措的學(xué)生和老師中間。你需要重新定義一個Parent類,他既不去食堂吃飯也不回家睡覺,一切食宿都在賓館解決。萬一你忘記了Parent也是正常人,沒有定義Parent如何去睡覺,是不是要讓Parent活活困死呢?當(dāng)有一天,全國千千萬萬的新新人類都來到了校園,你會忘記的事情是不是也將會是千千萬萬,你害死的鮮活生命何以計數(shù)呢?

當(dāng)我們有了IHuman接口,不管怎么說,家長還是人,我們定義一個parent類:

接口詳解

家長此行的其他目的,無非是對學(xué)生曉之以錢,對老師動之以禮等等,可以隨他折騰了。同時,你還沒有忘記需要完美地解決家長的食宿問題。所有的新新人類還是人,完全不用擔(dān)心你會忘記他們作為人的需求(忘記了?會有編譯錯誤報告告訴你的...)。

上面只是舉了一個接口與多個類的例子。實際應(yīng)用中,我們可以再定義一個ITeacher的接口,Teacher類對應(yīng)IHuman和ITeacher兩個接口,分別規(guī)范了老師作為一名人民教師以及一個人的動作。也就是一個類可以同時實現(xiàn)多個接口。

不過好像還是不太明白接口與基類的區(qū)別。以下是幾個形象的比喻:

1.飛機會飛,鳥會飛,他們都繼承了同一個接口“飛”;然而同樣會飛的F22和鴿子,一個屬于“飛機”類,另一個屬于“鳥”類。
2. 鐵門跟木門都是門(基類),你想要個門我給不了(基類不能實例化),但我可以給你個具體的鐵門或木門(多態(tài));而且只能是門,你不能說它是窗(繼承類只能繼承于一個基類——單繼承);一個門可以有鎖(接口)也可以有門鈴(另一個接口,多實現(xiàn))。 門定義了你是什么,接口(鎖、門鈴)規(guī)定了你能做什么,(一個接口最好只能做一件事,你不能要求鎖也能發(fā)出聲音吧)。至于鐵門的鎖是什么牌子的,木門的門鈴是什么聲音的,那就是鐵門和木門需要關(guān)心的事兒了。

總結(jié)

以下是我們必須牢記于心的地方, 接口只包含方法、委托或事件的簽名。 方法的實現(xiàn)是在實現(xiàn)接口的類中完成的 , 接口可以是命名空間或類的成員,并且可以包含下列成員的簽名:方法、屬性、索引器、事件 ,一個接口可從一個或多個基接口繼承。當(dāng)基類型列表包含基類和接口時,基類必須是列表中的第一項。 實現(xiàn)接口的類可以顯式實現(xiàn)該接口的成員。顯式實現(xiàn)的成員不能通過類實例訪問,而只能通過接口實例訪問。

通常認(rèn)為接口要比基類更加靈活,類只要實現(xiàn)了某一接口,調(diào)用者便可以利用該接口實現(xiàn)多態(tài)訪問,在組件化開發(fā)中很常用,由組件規(guī)范定義者去定義一個接口,不同分工的發(fā)人員按照各自的目的去實現(xiàn)這個接口。而基類的方式相對比較死板,但有一些比較通用的方法就可以不必在子類中重寫了。二者不能夠說誰的功能更強大,或者說誰能取代誰,只是我們可以根據(jù)需要選用。例如.net框架中的TextBox,Label等是從WebControl繼承過來,采用基類的方式,而SqlConnection和OracleConnection實現(xiàn)IDbConnection的接口,這樣程序就可以使用IDbConnection接口去訪問不同類型的數(shù)據(jù)庫。

接口詳解


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产亚洲精品美女一区二区 | 国产黄网永久免费 | 亚洲视频一二三 | 番茄视频在线观看黄版本免费 | 久久久国产免费影院 | 日本一级毛片大片免费 | 国产91在线|亚洲 | 国产精品久久久久久一级毛片 | 精品久久久久久久一区二区手机版 | 久久国产精品一国产精品金尊 | 国产亚洲一区二区精品 | 国产综合久久久久久鬼色 | 亚洲精品国产精品乱码不97 | 亚洲综合图片小说区热久久 | 啪啪短视频 | 毛片在线观看视频 | 免费日韩毛片 | 欧美日韩99 | 国产精品a人片在线观看 | 国产欧美一区二区精品仙草咪 | 欧美 日本 | 久99久视频 | 国产精品香蕉在线观看首页 | 爱爱夜夜爽成人夜夜爽 | 很很操很很日 | 欧美乱妇高清无乱码视频在线 | 亚洲图欧美日韩色综合图 | 日韩久久影院 | 天天碰天天操 | 香蕉蕉亚亚洲aav综合 | 狠狠的操你| 日韩一区二区三区免费视频 | 在线亚洲综合 | 成年女人毛片 | 深夜影院老司机69影院 | 九九热欧美| 手机国产日韩高清免费看片 | 日韩视频一区 | 国产伦精品一区二区三区免费迷 | 999热这里全都是精品 | 精品久久久久久久一区二区手机版 |