父類引用變量引用子類時可以調用子類覆蓋的方法。
舉個例子:
假設有類Cat,類Dog,類Duck。。。他們都有一個繼承自父類Animal的方法eat(),各自覆蓋了這個方法,因為貓狗鴨吃相不同
現在。我有另一類,里面有個方法處理各種動物的吃相all_eat()
當然你可以這么寫:
// 需要用到某個類型時給其創建對象
public
Cat cat =
null
;
public
Dog dog =
null
;
public
Duck ducl =
null
;
public
void
all_eat(){
if
(cat!=
null
){
cat.eat();
}
if
(dog!=
null
){
dog.eat();
}
if
(duck!=
null
){
duc.eat();
}
}
這樣寫是不是比較麻煩,如果類型有十幾個甚至更多呢?
所以用多態可以這么寫:
// 你可以把 Cat, Dog, Duck 任意一個的對象作為參數傳進來
// 因為他們都是Animal的子類,並且接下來animal.eat()會
// 根據實際對象的類型去調用相應的eat()方法。這就是多態
animal.eat();
