具體操作
語法: 父類名 物件名 = new 子類名();
專案含義
含義同乙個介面,使用不同的例項,進而執行不同的操作
優點靈活、簡化、介面性,可替換、擴充性,消除型別間的耦合關係
必要條件
繼承、重寫、父類引用指向子類物件。
animal cat = new cat();
cat.eat();
當使用多型方式呼叫方法時:
檢查父類是否有該方法。無則出錯。
父類有該方法時,去呼叫子類同名方法。
這個過程也叫虛擬方法。
cat cat = new cat();
cat.eat();
當不使用多型方式呼叫方法時:
不會檢視父類。
直接呼叫子類方法。
含義
物件名。objectname。
物件型別。父類名。
選用的建構函式。子類構造器。
parentclassname objectname =
newchildclassname()
;
方式一:重寫
方式二 :介面
方式三:抽象類和抽象方法。
實參型別
示例基本資料型別
cat.eat(「蘋果」);
引用資料型別
num.findmax(arr1);
例項物件
eat(new cat());
原則:直接轉換:子轉父。
強制轉換:父轉子。
// ********************=各自對應類定義物件***************====
// 情況1:子可直接轉父。
animal animal =
newanimal()
;cat cat =
newcat()
;animal = cat;
// 結果:正確
// 情況2:子可直接轉父,但不能同時重複轉。
animal animal =
newanimal()
;// 建立例項物件animal
cat cat =
newcat()
;// 建立例項物件cat
dog dog =
newdog()
;// 建立例項物件dog
animal = cat;
// 結果:正確。子可直接轉父
animal = dog;
// 結果:錯誤。但不能同時重複轉
// 情況3:父可強制轉子。
animal animal =
newanimal()
;// 建立例項物件animal
cat cat =
newcat()
;// 建立例項物件cat
cat =
(cat)animal;
// 結果:正確。父可強制轉子。
// ********************=多型定義物件***************====
// 情況1:子可直接轉父。
animal animal =
newanimal()
;animal cat =
newcat()
;//
animal = cat;
// 結果:正確。
// 情況2:子可直接轉父,但不能同時重複轉。
animal animal =
newanimal()
;animal cat =
newcat()
;animal = cat;
// 結果:正確。
animal = dog;
// 結果:出錯。
// 情況3:父可強制轉子。
animal animal =
newanimal()
;animal cat =
newcat()
;cat cat =
newcat()
;cat =
(cat)animal;
// 正確。父可強制轉子。
// ********************=各自對應類定義物件和多型定義物件***************====
// 情況1: 。
animal cat1 =
newcat()
;cat cat2 =
newcat()
;cat2 = cat1;
// 出錯
cat1 = cat2;
// 正確
// 情況2: 。
animal cat1 =
newcat()
;cat cat2 =
newcat()
;cat2 =
(cat)cat1;
// 正確
cat1 = cat2;
// 正確
動物:貓、狗。
主函式入口類:
public
class
mainentrance
public
static
void
show
(animal a)
else
if(a instanceof
dog)}}
}
動物類:
public
class
animal
}
貓類:
public
class
catextends
animal
public
void
work()
}
狗類:
public dog extends
animal
public
void
work()
}
物件導向三大特性 多型
什麼是多型 父類的一些成員,子類繼承周去重寫從而實現不同的功能。多型的風雷 多型分為兩種,一種是編譯時的多型,一種是執行時的多型。編譯時多型 編譯時的多型性是通過過載來實現的。編譯時的多型性 編譯時的多型性是通過過載來實現的。對於非虛的成員來說,系統在編譯時,根據傳遞的引數 返回的型別等資訊決定實現...
物件導向的三大特性 多型
python物件導向的三大特徵之一 一種型別的多種形態,多個子類去繼承父類,那麼每乙個子類都是這個父類的一種形態.多型 python處處是多型.python 弱型別語言 name alex python 不管什麼型別,傳入函式,封裝到物件中都可以.python沒有多型?他有什麼?他有鴨子型別.鴨子型...
物件導向三大特性之多型
多型 同乙個物件在不同時刻表現出來的不同狀態。多型的前提和體現 存在繼承關係或者實現關係 這裡的實現是指介面間的關係 有方法的重寫。有父類引用指向子類物件。多型中成員的訪問特點 訪問成員變數時 首先定義乙個動物類 其次定義乙個子類來繼承它 定義乙個測試類 由此可見當我們用多型的形式去訪問類中的成員變...