<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zxbyhcsdn

     

    關于抽象類和接口的理解:

    關于抽象類和接口的理解:
     
    抽象類建議這樣來理解好一點:抽象者,不確定也
    就是原本是一個普通的類,但是由于有了一個抽象方法,所以這個類就必須成為一個抽象類.
    為什么啦!
    因為定義成抽象類,就不允許直接實例化了. 想想也是顯然的,因為有一個方法是抽象方法,都沒有實現,
    實例化成對象了,然后對象調用這個方法不久瓜了么?
    這就好比車子還沒有安上方向盤,如果要開的話,就沒辦法控制方向了.
    抽象類使用的場合:
    類的部分方法是確定的,而另外部分方法是不確定的,只有通過繼承的子類去確定這部分方法,
    但是子類可以使用抽象類的確定的方法(重用).

    這兒需要注意一點:就是不要去Override 父類的非抽象方法,那寫方法是給你重用的,不是給你置換的.
    原則:繼承應當用來擴展超類的功能,而不是置換或者撤銷超類的功能
    比如說,你有一個貓,然后你把狗繼承自貓,但是貓可以爬樹,狗不能.就只有把那個爬樹的功能撤銷了.想想這是多么荒唐的事情啊!!

    那么何為接口啦:
    就是說有一個類,所有的方法都是不確定的.
    比如說 平面形狀,總歸有獲取設置邊長,面積這些方法吧,但是怎么去實現是不確定的.
    好像 形狀這玩意兒 的確找不到能確定的方法.那么就可以定義成一個接口.
    接口允許有 public static final 的屬性, 但是不推薦這樣用,這是一種錯誤的用法.
    可以認為接口就是一個特殊的 抽象類(所有的方法都是不確定的)
    然后接口有一個好處,就是可多繼承.
    舉一個例子,說明抽象類和接口一起用的地方
    比如說,門這個類有Opern和Close兩個方法,但是有一種特殊的門需要一個報警的功能,
    但是報警不是門的特征,是報警器的特征,故可以把報警設置為一個接口
    那么報警的門就從門這個抽象類和報警接口繼承

    posted on 2008-07-23 19:03 zxbyh 閱讀(1582) 評論(6)  編輯  收藏 所屬分類: OOAD

    評論

    # re: 關于抽象類和接口的理解: 2008-07-23 22:19 藍雪沙

    恩,寫的挺不錯,特別是 接口 最后面舉的 門 例子 我感覺非常到位。

    希望樓主繼續總結,Java中像這樣的有必要徹底清楚的很多。   回復  更多評論   

    # re: 關于抽象類和接口的理解: 2008-07-24 08:41 wxm

    我是這樣理解的,從目的上來說,抽象類主要是為了代碼或算法的重用,而接口是一種約定,從功能上來說,抽象類有實現部分,但是不能多繼承,接口能多繼承,但是不能有實現,日常使用中,應該從使用的目的上來決定是否采用抽象類或接口,而不是語法功能上  回復  更多評論   

    # re: 關于抽象類和接口的理解: 2008-07-24 13:01 zhuxing

    同意樓上(wxm )說的,建議一般不要從語法的層面進行區分。

    很關鍵的一個區別:接口更加靈活,同時能夠更好地支持動態擴展。例如,類之間的繼承結構體現出了一個中縱向的結構,而接口則可以橫向的切入。
    再者,接口一般用來封裝一個抽象的主題,多表現在行為的變化封裝和擴展。



    還有,我們在設計一個類型的時候,考慮兩件事情:
    1、定義其責任,即對外提供的服務,并定義通信的規則。
    2、如何創建和實現化改類型。

    1解決了如何使用類型的問題,2解決了如何創建的問題。接口相比抽象類能更加自然的將兩者進行解耦,而且能夠明顯加大2的自由度,因為很多時候我們是用工廠的方式對外提供實例。

    其實,很多的爭論點在如何放置公共功能的問題。其實很多牛人寫程序,很多時候很自然的運用Interface/Default Impl的方式,即:你定義了一個接口,順便提供一個相應的抽象類,提供一些默認的實現。

      回復  更多評論   

    # re: 關于抽象類和接口的理解: [未登錄] 2008-07-24 14:03 zxbyh

    看了以上兩位的評論,覺得提出的意見很好,
    但是我覺得既然也不是什么非腦筋的事情,何不在語法和應有的兩個層面上都理解清楚啦.比較基礎的東西,理解透徹點是好事情.

    1.
    抽象類使用的場合:
    類的部分方法是確定的,而另外部分方法是不確定的,只有通過繼承的子類去確定這部分方法,
    但是子類可以使用抽象類的確定的方法(重用).
    ------------------------------------------------------
    這句話的意思就是說抽象類主要是為了代碼或算法的重用.


    2.
    那么何為接口啦:
    就是說有一個類,所有的方法都是不確定的.
    比如說 平面形狀,總歸有獲取設置邊長,面積這些方法吧,但是怎么去實現是不確定的.
    ----------------------------------------------------------
    上面這一段話,需要改一下,就是說有一個類,所有的方法都是不確定的.但是必須要有這些方法.
    換言之:接口是一種約定,是一種規范,你必須滿足他,但是不關心你怎么實現.
      回復  更多評論   

    # re: 關于抽象類和接口的理解: [未登錄] 2008-07-24 19:47 kevin

    @zxbyh
    你這么一解釋,那問題就大了去了 。。。。  回復  更多評論   

    # re: 關于抽象類和接口的理解: 2008-07-25 00:43 stanleyxu

    abstract class is related to oop. it can be considered as a strict relationship, just like couple.
    interface is an easy-to-bind. it can be considered as a loose relationship, just like one night stand  回復  更多評論   

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 99久久免费观看| 久久久免费精品re6| 在线视频免费观看www动漫| 亚洲AV日韩综合一区尤物| 久久久www成人免费毛片| 亚洲第一男人天堂| 女人被免费视频网站| 亚洲国产精品日韩av不卡在线| 亚洲色偷偷av男人的天堂| 日韩电影免费在线观看网站| 亚洲av永久无码精品表情包| 久久久免费精品re6| 国产成人亚洲合集青青草原精品 | 久久夜色精品国产亚洲AV动态图| 久久久久亚洲av无码专区蜜芽| 亚洲成人网在线播放| 88xx成人永久免费观看| 亚洲国产精品线观看不卡| 成人免费毛片内射美女APP| 亚洲AV女人18毛片水真多| 亚洲精品国产va在线观看蜜芽| 99999久久久久久亚洲| 国产精品免费视频网站| 色欲色欲天天天www亚洲伊| 亚洲伊人久久综合中文成人网| 国产成人精品亚洲日本在线| 国产人成免费视频| 日韩毛片一区视频免费| 亚洲熟妇无码八AV在线播放| 亚洲免费观看在线视频| 久久精品国产亚洲av天美18| 亚洲熟妇中文字幕五十中出| 2021国产精品成人免费视频| 污污免费在线观看| 亚洲美女精品视频| 免费人成无码大片在线观看| 特级精品毛片免费观看| 亚洲AV一区二区三区四区| 亚洲国产三级在线观看| 大香人蕉免费视频75| 97在线免费观看视频|