java提高篇之強制類型轉換

在java中強制類型轉換分爲基本數據類型和引用數據類型兩種,這裏我們討論的後者,也就是引用數據類型的強制類型轉換。


在Java中由於繼承和向上轉型,子類可以非常自然地轉換成父類,但是父類轉換成子類則需要強制轉換。因爲子類擁有比父類更多的屬性、更強的功能,所以父類轉換爲子類需要強制。那麼,是不是隻要是父類轉換爲子類就會成功呢?其實不然,他們之間的強制類型轉換是有條件的。


舉個例子來說明。比如系統中存在Father、Son兩個對象。首先我們先構造一個Son對象,然後用一個Father類型變量引用它:
Father father = new Son();
Son son = (Son)father;
這條語句是可行的。


Father father = new  Father();
Son son = (Son) father;
這個系統會拋出ClassCastException異常信息。


   所以編譯器在編譯時只會檢查類型之間是否存在繼承關係,有則通過;而在運行時就會檢查它的真實類型,是則通過,否則拋出ClassCastException異常。


    

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