Java中父類和子類的類型轉換解惑 – JAVA編程語言程序開發技術文章

我們平時經常在項目中經常會看到這樣的場景,為實現java運行時綁定的多態性,以父類引用指向子類對象

[java] 
Parent p = new Son()  
這樣做的好處是代碼擴展性強,耦合性低。比如一個方法接受Parent的參數類型,那麼我們可以再調用方法的時候傳遞任何一個繼承瞭Parent類型的子類對象作為實參。這樣就實現瞭運行時綁定。
但是,在這種情況下,我們隻能通過p調用父類的方法,而不能調用子類的特有方法。所以如果我們想調用子類的特有方法的話就要通過強制類型轉換來實現。

[java] 
((Son)p).s1() 或 Son s = (Son)p  
這就是父類和子類的類型轉換存在的意義。
還有另外一種情況,就是將父類引用指向父類對象,而後將父類引用強制轉換為子類引用

[java] 
Parent p = new Parent();  
on s = (Son)p; 
java的開發者認為這樣毫無意義,所以在開發過程中我們不能這樣做,JVM會包類型轉換錯誤的異常。

發佈留言