1、黎克特制替換
①概述:在子類物件中可以替換所有使用的父類物件
②原則:父類物件是不能替換子類物件的
③應用:使繼承復用成為可能,當子類可以替換父類時,軟體功能不受影響,父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為
④關鍵字:is和a操作符
2、is和as操作符的使用
is操作符用於檢查物件和指定的型別是否相容
as操作符主要用於兩個物件之間的型別轉換
3、父類型別作為引數(可以接收多種子型別)
①子類重寫父類的虛方法時
(1)建立父類物件,用子類物件例項化這個父類物件
(2)把父類物件型別作為形參型別,它的子類物件作為實參傳入
②執行時,根據實際建立物件的型別決定執行哪個方法
用來舉例乙個類所需要的行為,不明確提供具體實現方法,必須由子類實現它的抽象方法。
①抽象方法(乙個沒有實現的方法)
通過在定義方法時增加關鍵字abstract可以宣告抽象方法
語法:
訪問修飾符 abstract 返回型別 方法名(
);
注意:抽象方法沒有方法執行邏輯的方法體,含有抽象方法的類必然是抽象類。
②抽象類
語法:
訪問修飾符 abstract
class 類名
注意:抽象類不能被例項化,也不能是密封的或靜態的。
①當乙個抽象父類派生乙個子類時,子類將繼承父類的所有特徵,包括它未實現的抽象方法。
抽象方法必須在它的子類中實現,除非它的子類也是抽象類。
通過override關鍵字重寫抽象方法:
訪問修飾符 override 返回型別 方法名()
注意:父類提供一系列規定,約束子類的行為。父類可以提供一些共性的行為,抽象類和抽象方法實現多型性。抽象父類中可以定義抽象方法和普通方法。
深入理解多型
能將每個函式都申明為虛函式,但是會影響效率,不建議這樣做,虛函式指標呼叫重寫函式是在程式執行時候進行的,因此需要一些定址操作才能真正呼叫函式,如果都設定成虛函式,效率會低很多 多型的實現效果 呼叫同樣的語句能表現不同的表現形式 多型實現的三個條件 有繼承,有虛函式重寫,有父類指標指向子類物件 多型的...
深入理解多型
我們知道子類物件可以賦給父類物件,也可以說子類物件可以完全替換父類物件並出現在父類物件可以出現的任何地方,且程式的行為不會發生改變,但反過來父類物件是不能替換子類物件的!比如汽車類物件就不能替換卡車類物件 雖然卡車也是汽車 因為汽車包含的範圍比卡車要大,它也可以是私家車!這種特性就被稱為 黎克特制替...
深入理解Java多型機制
目錄 1,多型的概念?2,存在的條件?3,案列解析?4,應用場景?1,多型的概念 父類引用指向子類物件,通俗點就是,在編譯時不繫結是什麼方法,根據你傳進來的值,是什麼就會執行什麼。2.存在條件 第一,要有繼承 第二,要有方法的重寫 第三,父類引用指向子類物件 3,案列解析 好好體會以下這個案例,通過...