对于接口的理解
可能是對(duì)于接口的理解???最早是來源于?計(jì)算機(jī)網(wǎng)絡(luò)吧:層之間的通信
所以在學(xué)習(xí)面向?qū)ο蟮倪^程中?一直難以理解“接口”????到底是哪里接哪里?
?
最近把書詳細(xì)的看了一遍??
發(fā)現(xiàn)接口是一組為實(shí)現(xiàn)的方法的集合。?
但是在每次使用時(shí)???都要把接口里的方法實(shí)現(xiàn)了,我就想到既然接口還需要被實(shí)現(xiàn)??那還用接口干嘛??直接重新寫方法?不就可以了么????????多費(fèi)一步???????然后從網(wǎng)上去查找接口的好處
發(fā)現(xiàn)以下的理解??
?
?
————————》
接口用得好壞,取決于水平。但是初步的理解接口還是不難的。首先記住:類是對(duì)象的抽象,接口是方法的抽象。類的概念就不說了。單說接口吧。如果方法跨越不同類的對(duì)象,可使用接口,即然你語法很熟了,我就不去寫代碼了。
???舉個(gè)例子吧,一個(gè)外地的朋友突然來看你,你常常會(huì)問“你是坐車來的還是坐飛機(jī)來的?”
???那么可以定義了三個(gè)類:飛機(jī)類,船類,車類(當(dāng)然,你也可以進(jìn)一步把這三個(gè)類抽象為一個(gè)類,運(yùn)輸類。但為了說明接口,暫不作進(jìn)一步抽象)。定義一個(gè)接口:客運(yùn)。
???三種類的對(duì)象都可以各自去實(shí)現(xiàn)“客運(yùn)”這一接口,當(dāng)然它們的實(shí)現(xiàn)方式各不相同。
???再舉一例,鳥類,飛機(jī)類,神仙類都能“飛”。這三種類都以各自的方式去實(shí)現(xiàn)“飛”這一接口的。
???當(dāng)然這兩個(gè)例子只能淺淺的說明接口,以后你在運(yùn)用時(shí)去深入理解吧。但記住:接口是是方法的抽象。如果方法跨越不同類的對(duì)象,可使用接口。
?
從他的敘述中??
他認(rèn)為??當(dāng)跨越不同類的要使用大致功能相同的方法時(shí)??就可以使用接口,功能相似??但不完全相同?(功能相同??不如寫靜態(tài)函數(shù))
然后發(fā)現(xiàn)這個(gè)人的理解更好一點(diǎn)
————————》
定義一個(gè)接口是為了遵循同一種規(guī)范,便于程序的擴(kuò)展。它里面的成員可以是字段,索引器,屬性,函數(shù),事件。
其中函數(shù)是虛函數(shù),只有函數(shù)定義,不寫函數(shù)主體。
比如我們定義一個(gè)鳥的接口。規(guī)定鳥:可以飛翔,可以吃食。但是具體這是什么鳥,吃什么食物我們不用管,有這樣一個(gè)接口就好,后面再寫具體的鳥類時(shí)繼承這個(gè)接口,再去考慮實(shí)現(xiàn)具體的函數(shù)。
由此可以看出,繼承同一個(gè)接口可以實(shí)現(xiàn)類的多態(tài)性,但是他們都遵循同一個(gè)接口,有相同的類成員。
以上是我自己理解的,其他的你自己上網(wǎng)查吧,我個(gè)人對(duì)理論知識(shí)記得很爛。。。
?
他認(rèn)為???接口是實(shí)現(xiàn)了一種規(guī)范??比如?鳥飛?神仙飛??飛機(jī)飛??具體方法不一樣?但是都是飛????可以說是一種功能??????就把他們叫做接口好了???????繼承接口?就告訴你??????這玩意能飛??但是具體怎么飛?????咱也不知道??應(yīng)該不像是他后來說的多態(tài)性?而是說?一種整體架構(gòu)的角度來看程序
?
?
后來發(fā)現(xiàn)???接口不能用字段?但是可以用屬性???
原因是
接口關(guān)心的是方法的約定,而不是方法的實(shí)現(xiàn)。
而具體怎么安排字段,要什么字段,字段在內(nèi)存的位置,則是內(nèi)部細(xì)節(jié),接口不應(yīng)該管這么寬。
屬性的確就是getter和setter,但獨(dú)立出來成為單獨(dú)的類別,使它更自然,使得那些對(duì)象愿意對(duì)外展示的屬性(顏色,大小,年紀(jì)等),不用通過粗笨的方法來得到。
比如WinForm下的PropertyGrid,就專門顯示對(duì)象的屬性,而不理睬字段或方法。
?
他的回答??也很好的說明了?接口的目的是規(guī)范
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/jilodream/archive/2012/11/06/4222774.html
總結(jié)
- 上一篇: OpenLayers加载搜狗地图
- 下一篇: 两道与二进制有关的sequence