多態: 一種事物的多種形態
好處: 增強代碼可維護性 可擴展性
弊端: 不能直接調用子類的特殊方法
規則(前提)
1.類與類之間要有聯繫
2.要有方法的重寫
3.父類的引用指向子類的對象
class Animal{
public void eat() {
System.out.println("吃食物");
}
}
class Cat extends Animal{
public void eat() {
System.out.println("貓吃魚");
}
}
可以看到這裏創建了兩個類 動物是父類 貓是子類
Animal animal = new Cat();
a1.eat();
這裏就是父類的引用指向子類的對象
打印出來的也就是貓吃魚
多態時 當父類引用調用成員變量的時候
如果父類中沒有這個成員變量 編譯器不會通過
運行時 訪問的是父類中的這個成員變量
多態時 調用成員方法的時候
編譯器還是看父類有沒有這個成員方法
但運行時是運行的子類的這個方法
向上轉型: 子類賦值給父類
向下轉型: 父類賦值給父類(必須先前有過向上轉型)
instanceof 是關鍵詞
用來判斷 關鍵詞左邊是否屬於右邊那個類的對象