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