多態、instanceof運算符

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的繼承下來的方法和特有方法
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章