zhrb的空間

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            20 隨筆 :: 0 文章 :: 29 評論 :: 0 Trackbacks

                  接口主要是用來描述這個系統有些什么功能,應該怎么調用這些功能,是更高的一
          層抽象。主要是用來表現給外界看。同時接口比較穩定,不能隨便變來變去。因為你一
          變,對于外界來說你的表現就變了。接口對于系統來說,相當于一個規范的描述,感覺
          有點像虛擬機規范之于虛擬機。接口對于編程人員來說,相當于幫你隱藏了一些東西,
          這寫隱藏(如何實現)的東西,你不需要去關注。

              抽象類,在語法上的區別,你也說了。實際上抽象類也可以部分的實現接口的功能
          ,即描述一些東西給外界看。抽象類更像一個系統的骨架,里面有一些基本的需要共享
          的代碼。和一些已經實現好的方法。想想,如果全都用接口代替抽象類的話,那么我們
          底下子類的編寫就需要編寫大量的代碼。而這些子類,本可以實現代碼和屬性的共享的
          。所以抽象類,更多的是一個對內的東西。

              可以說接口是比抽象類更抽象的一個東西。接口和抽象類關注的地方不一樣。當然
          從邏輯上來看,他們的區別不是那么的明顯。但是從用法上來看,他們還是有比較大的
          區別。

              寫的有點亂...

          posted on 2008-02-28 15:43 zhrb 閱讀(1456) 評論(3)  編輯  收藏

          評論

          # re: 接口與抽象類的區別.... 2008-07-18 09:03 蒙娜麗莎
          抽象方法是必須實現的方法。就象動物都要呼吸。但是魚用鰓呼吸,豬用肺呼吸。
          動物類要有呼吸方法。怎么呼吸就是子類的事了。
          現在有很多討論和建議提倡用interface代替abstract類,兩者從理論上可以做一般性的混用,但是在實際應用中,他們還是有一定區別的。抽象類一般作為公共的父類為子類的擴展提供基礎,這里的擴展包括了屬性上和行為上的。而接口一般來說不考慮屬性,只考慮方法,使得子類可以自由的填補或者擴展接口所定義的方法,就像JAVA王子所說的事件中的適配器就是一個很好的應用。
          用一個簡單的例子,比如說一個教師,我們把它作為一個抽象類,有自己的屬性,比如說年齡,教育程度,教師編號等等,而教師也是分很多種類的,我們就可以繼承教師類而擴展特有的種類屬性,而普遍屬性已經直接繼承了下來。
          而接口呢~還是拿教師做例子,教師的行為很多,除了和普通人相同的以外,還有職業相關的行為,比如改考卷,講課等等,我們把這些行為定義成無body的方法,作為一個集合,它是一個interface。而教師張三李四的各自行為特點又有不同,那么他們就可以擴展自己的行為body。從這點意義上來說,interface偏重于行為。
          總之,在許多情況下,接口確實可以代替抽象類,如果你不需要刻意表達屬性上的繼承的話。  回復  更多評論
            

          # re: 接口與抽象類的區別....[未登錄] 2008-07-18 10:45 zhrb
          @蒙娜麗莎
          說的不錯,主要還是要到實踐中應用才能具體的指導怎么應用這兩者。多看多用  回復  更多評論
            

          # re: 接口與抽象類的區別.... 2009-05-31 09:04 12
          @蒙娜麗莎
          接口和抽象類差不多  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 威远县| 大城县| 伽师县| 大悟县| 兰州市| 个旧市| 白朗县| 正宁县| 汉沽区| 鄂托克前旗| 静海县| 荥经县| 洞头县| 于都县| 四子王旗| 额济纳旗| 开远市| 攀枝花市| 峡江县| 紫云| 谷城县| 聂拉木县| 明光市| 商南县| 洞头县| 社旗县| 金阳县| 饶阳县| 南平市| 新蔡县| 田阳县| 三穗县| 剑河县| 桐梓县| 五指山市| 东乡| 丹棱县| 栖霞市| 恩施市| 友谊县| 大兴区|