1. 程式人生 > >深入理解多態

深入理解多態

nbsp 運行 虛方法 nec spa 不同 輸出 子類重寫 多態

    裏氏替換原則和多態的應用

      裏氏替換原則(LSP)

      ·在一個軟件系統中,子類對象可以替換所有使用的父類對象,

       且程序行為沒有變化

      ·父類中的子類進行轉換

        1、SE se = (SE)empls;類型轉換

        2、SE se = empls as SE;類型轉換,如果不是同一類型,輸出null,也會報錯

      ·使用父類作為參數使用,可以接收多種子類類型

      ·根據實際傳遞的子類對象執行相對應子類的方法進行重寫

    小結:

      用虛方法實現多態的步驟

         @子類重寫父類的虛方法

         @兩種方式

          創建父類變量,實例化子類對象

          把父類類型作為參數類型,該子類及子類對象作為參數傳入

        @運行時,根據實際創建的對象決定執行那個方法

      裏氏替換原則

        @子類對象可以代替父類對象,反過來,父類對象不能代替子類對象

        @會使用父類類型作為參數

        @is操作符用於檢查對象和指定的類型是否兼容

        @as操作符用於兩個對象之間的類型轉換

    抽象類和抽象方法

      技術分享圖片

      技術分享圖片

          抽象類用來列舉一個類所需要的行為

      抽象類不明確提供具體實現方法

      抽象類必須由其子類實現它的抽象方法(除非子類也具有抽象性)

      @抽象類不能被實例化

      @抽象類不能是密封的或靜態的(抽象類不能用seald或static修飾)

    抽象類和抽象方法

      @抽象類通常代表一個抽象的概念

      @抽象方法約束子類對象的行為

        @比如:抽象的動物類,具有抽象方法吃()、喝()

    虛方法

      @具體類的默認實現、提供其子類擴展實現方式

        @比如:數據庫鏈接類,Connect()方法實現與SQL Server的鏈接,數據庫鏈接子類繼承並重寫,實現與其他數據庫的鏈接

      技術分享圖片

      面向對象的三大特征

      封裝:

        隱藏內部實現,穩定外部接口

      繼承:

        子類繼承父類成員,實現代碼重用

      多態:

        不同子類對同一個消息作出不同的反應

   總結:

      抽象方法

        是一個未實現的方法

        用abstract關鍵字修飾

        含有抽象方法的類必然是抽象類

      使用抽象方法和虛方法都可以實現多態性

      面向對象的三大特性是封裝、繼承和多態

      

          

      

深入理解多態