封裝 繼承和多態

java三大特性

  • 封裝:encapsulation 隱藏信息
    • 實現專業的分工,工作中的分模塊 分功能開發
    • 隱藏信息和實現細節,使得對代碼的修改更加安全和容易
  • 繼承 :inheritance 延續+擴展父類信息
    • 實現代碼複用,延續+擴展父類信息
  • 多態:polymorphism 模糊測羅 以不變應萬變
    • 以不變應萬變

封裝

  • 概念
    • 把對象的屬性和行爲結合爲一個獨立的整體,並儘可能隱藏對象的內部實現細節
  • 好處
    • 提高代碼的複用性和安全性
  • 設計原則

    • 把不想外界知道的實現細節隱藏起來,向外提供公共的訪問方法
  • javabean

    • 一個對象實例的封裝類
    • 必須爲public class
    • 必須有一個無參構造器
    • 所有的屬性必須private修飾進行封裝
    • 爲屬性提供公共的setter和gettet方法

    繼承

  • 概念

    • 在一個現有類的基礎上構建一個新的類,子類會自動擁有父類所有可繼承的屬性和方法
  • 繼承的格式
    • class 子類 extends 父類
  • 好處
    • 提高代碼複用性,提高開發效率
    • 類與類之間產生關係,提供了多態的前提
  • 注意事項
    • 單繼承,一個類只能繼承一個父類
    • 多個子類可以繼承同一個父類
    • 可以多層繼承
  • 父子類成員變量
    • 子類可以有和父類同名的屬性,不會互相影響
    • 子類中可以直接訪問父類非私有屬性
    • 若子類中也有同名屬性,可用super。屬性名來訪問父類屬性
  • 父子類中的方法
    • 子類中可以有和父類同名的方法,不會互相影響
    • 子類有父類中可非私有的方法
    • 調用方法時,會先在子類中找;如果子類沒有,會不斷向父類找
    • 特殊情況:方法的重寫
      • 方法重寫特點:
      • 必須保證權限大於等於父類權限
      • 方法名稱 參數列表以及返回值類型一致,權限可以兼容
  • 方法的重寫
    • 在子類中可以根據需要對從父類繼承來的方法進行重寫
    • 具有相同的方法名稱 參數列表和返回值類型
    • 屬性不會重寫
    • 靜態方法不會重寫
    • final修飾的類不能繼承,修飾的方法不能重寫
    • 私有方法不會重寫
  • super關鍵字

    • 用來代表父類對象
    • 繼承中的構造方法

      • 子類構造中必須調用父類的構造器
      • 子類可以在這的構造器中用super()調用父類的構造器;用this()代表子類其他構造器
      • super()必須寫子類構造器的第一行
      • 子類構造器中無顯示調用父類的構造器,jvm會默認調用父類構造器
      • 子類無顯示調用父誒構造器,而父類又沒有無參構造器會報錯

        ## 對象轉型 ##
        

        一個父類的引用類型變量可以指向子類的對象
        一個父類的引用不可以訪問其子類對象的新增成員

多態

  • 概念
    • 父類引用變量可以指向子類對象,父類在調用方法時實際會調用子類重寫的方法
    • 成員變量是父類的成員變量
    • 調用的方法是子類重寫後的方法
    • 編譯看左邊,運行看右邊
  • 多態的好處
    • 隱藏子類類型,提高代碼的擴展性
  • 壞處

    • 只能使用父類已有的功能,無法開拓新功能
  • 多態的條件

    • 父子類
    • 父類引用指向子類對象
    • 方法重寫
  • 靜態綁定
    • 在編譯器完成,可以提高代碼的執行速度
    • 靜態方法
    • 構造器
    • private方法
    • 用關鍵字super調用的方法
  • 動態綁定
    • 在運行期間,根據對象的實際類型調用相應的方法,降低了代碼的執行速度
    • 相同的父類對象,調用相同的方法,參數也相同,但是實際運行的方法不同。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章