實現多態的三個條件
- 繼承的存在。繼承是多態的基礎,沒有繼承就沒有多態
- 子類重寫父類的方法,JVM 會調用子類重寫后的方法
- 父類引用變量指向子類對象
向上轉型:將一個父類的引用指向一個子類對象,自動進行類型轉換。
- 通過父類引用變量調用的方法是子類覆蓋或繼承父類的方法,而不是父類的方法。
- 通過父類引用變量無法調用子類特有的方法。
向下轉型:將一個指向子類對象的引用賦給一個子類的引用,必須進行強制類型轉換。
- 向下轉型必須轉換為父類引用指向的真實子類類型,不是任意的強制轉換,否則會出現 ClassCastException
- 向下轉型時可以結合使用 instanceof 運算符進行判斷