1、向下轉型需在滿足向上轉型前提下進行
譬如:如下圖所示代碼中,父類Person及兩個子類Chinese,French,子類中既有重寫父類的方法,又有各自獨立的方法。
測試類中:先經過向上轉型設置one指向Chinese,後由French強轉one,此時雖然編譯不會報錯,但會產生運行時異常。
因此:請注意,向下轉型時,不允許轉爲非原始類型,即“哪來回哪去”
2、類型轉換時的括號應用
接上面父類Person及兩個子類Chinese,French代碼,此時測試類中,先經過向上轉型設置one指向Chinese,後希望實現強轉回Chinese進而調用獨有的Taijiquan方法。由下圖可見,編譯時即產生異常。
原因爲:此時由於運算符優先級,會優先執行one.Taijiquan(); 該方法運行後纔會進行Chinese類型轉換。但經過上一步的向上轉型,one無法調用Chinese特有的Taijiquan方法。
修訂方法:
此時會在執行完Chinese類型轉換後,纔會進行Taijiquan方法。