日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

接口詳解

系統(tǒng) 2513 0

?

?

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

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

舉一個(gè)簡(jiǎn)單的例子,我覺(jué)得很好很經(jīng)典。

接口詳解

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

接口詳解

但是,幾乎可以確定的是,學(xué)生和老師是兩代人,他們之間有代溝,去完成作為一個(gè)人所必須完成的事情的時(shí)候,所采用的方式方法是不同的。同時(shí),他們也有不同的行為。比如,一個(gè)30歲的副教授,想必已經(jīng)結(jié)婚,所以需要傳宗接代、孝敬父母、愛(ài)護(hù)祖國(guó)花朵、教書(shū)育人、賺錢(qián)糊口...。而學(xué)生呢,正值妙齡,血?dú)夥絼偅桓始拍上攵?..

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

當(dāng)我們有了IHuman接口,不管怎么說(shuō),家長(zhǎng)還是人,我們定義一個(gè)parent類(lèi):

接口詳解

家長(zhǎng)此行的其他目的,無(wú)非是對(duì)學(xué)生曉之以錢(qián),對(duì)老師動(dòng)之以禮等等,可以隨他折騰了。同時(shí),你還沒(méi)有忘記需要完美地解決家長(zhǎng)的食宿問(wèn)題。所有的新新人類(lèi)還是人,完全不用擔(dān)心你會(huì)忘記他們作為人的需求(忘記了?會(huì)有編譯錯(cuò)誤報(bào)告告訴你的...)。

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

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

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

總結(jié)

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

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

接口詳解


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 龙岩市| 东辽县| 兴城市| 永吉县| 永春县| 阿巴嘎旗| 桓台县| 涿州市| 库尔勒市| 攀枝花市| 仪征市| 天峻县| 莱州市| 老河口市| 灌云县| 德江县| 溧水县| 罗江县| 汤原县| 连州市| 兴和县| 广德县| 沐川县| 海晏县| 武川县| 卓尼县| 正定县| 读书| 朝阳市| 哈尔滨市| 婺源县| 海宁市| 河曲县| 防城港市| 罗山县| 于都县| 鸡泽县| 德钦县| 民县| 邯郸县| 云和县|