java溫習*(13):關於向下轉型易出現錯誤總結

1、向下轉型需在滿足向上轉型前提下進行

譬如:如下圖所示代碼中,父類Person及兩個子類Chinese,French,子類中既有重寫父類的方法,又有各自獨立的方法。

圖片描述

測試類中:先經過向上轉型設置one指向Chinese,後由French強轉one,此時雖然編譯不會報錯,但會產生運行時異常。

圖片描述

圖片描述

因此:請注意,向下轉型時,不允許轉爲非原始類型,即“哪來回哪去”

2、類型轉換時的括號應用

接上面父類Person及兩個子類Chinese,French代碼,此時測試類中,先經過向上轉型設置one指向Chinese,後希望實現強轉回Chinese進而調用獨有的Taijiquan方法。由下圖可見,編譯時即產生異常。

圖片描述

原因爲:此時由於運算符優先級,會優先執行one.Taijiquan(); 該方法運行後纔會進行Chinese類型轉換。但經過上一步的向上轉型,one無法調用Chinese特有的Taijiquan方法。

圖片描述

修訂方法:

圖片描述

此時會在執行完Chinese類型轉換後,纔會進行Taijiquan方法。

圖片描述

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