1. 多態 滿足繼承關係,父類引用指向子類對象
- 編譯時多態 方法重載
- 運行時多態 程序運行時動態決定調用哪個方法
2. 向上轉型:也叫隱式轉型、自動轉型
- 父類引用指向子類實例,如People p = new Man()
- 可以調用子類重寫父類的方法以及父類派生的方法
- 無法調用子類獨有的方法
- 父類中的靜態方法無法被子類重寫,所以向上轉型後,只能調用父類原有的靜態方法
- 如果想要調用子類自己的無法重寫父類的靜態方法,必須再經過向下轉型後,才能調用
3. 向下轉型:強制類型轉換
- 子類引用指向父類對象,此處必須進行強轉,可以調用子類特有的方法
- 必須滿足轉型條件才能進行強轉
4. instanceof運算符:判斷對象是否滿足某個特定類型,返回true / false
- 判斷左邊的對象是否是右邊類型的實例
5. 舉例
// 子類對象做參數傳入進來,先進行向上轉型,判斷後再向下轉型,可以調用特有方法
public void feed(Animal animal) {
if(animal instanceof Cat) {
Cat temp = (Cat) animal;
// 此時可以調用Cat的繼承下來的方法和特有方法
} else if(animal instanceof Dog) {
Dog temp = (Dog) animal;
// 此時可以調用Dog的繼承下來的方法和特有方法
}
}