深入理解多態
裏氏替換原則和多態的應用
裏氏替換原則(LSP)
·在一個軟件系統中,子類對象可以替換所有使用的父類對象,
且程序行為沒有變化
·父類中的子類進行轉換
1、SE se = (SE)empls;類型轉換
2、SE se = empls as SE;類型轉換,如果不是同一類型,輸出null,也會報錯
·使用父類作為參數使用,可以接收多種子類類型
·根據實際傳遞的子類對象執行相對應子類的方法進行重寫
小結:
用虛方法實現多態的步驟
@子類重寫父類的虛方法
@兩種方式
創建父類變量,實例化子類對象
把父類類型作為參數類型,該子類及子類對象作為參數傳入
@運行時,根據實際創建的對象決定執行那個方法
裏氏替換原則
@子類對象可以代替父類對象,反過來,父類對象不能代替子類對象
@會使用父類類型作為參數
@is操作符用於檢查對象和指定的類型是否兼容
@as操作符用於兩個對象之間的類型轉換
抽象類和抽象方法
抽象類用來列舉一個類所需要的行為
抽象類不明確提供具體實現方法
抽象類必須由其子類實現它的抽象方法(除非子類也具有抽象性)
@抽象類不能被實例化
@抽象類不能是密封的或靜態的(抽象類不能用seald或static修飾)
抽象類和抽象方法
@抽象類通常代表一個抽象的概念
@抽象方法約束子類對象的行為
@比如:抽象的動物類,具有抽象方法吃()、喝()
虛方法
@具體類的默認實現、提供其子類擴展實現方式
@比如:數據庫鏈接類,Connect()方法實現與SQL Server的鏈接,數據庫鏈接子類繼承並重寫,實現與其他數據庫的鏈接
面向對象的三大特征
封裝:
隱藏內部實現,穩定外部接口
繼承:
子類繼承父類成員,實現代碼重用
多態:
不同子類對同一個消息作出不同的反應
總結:
抽象方法
是一個未實現的方法
用abstract關鍵字修飾
含有抽象方法的類必然是抽象類
使用抽象方法和虛方法都可以實現多態性
面向對象的三大特性是封裝、繼承和多態
深入理解多態