java多態的向上轉型與向下轉型(與編譯時類型與運行時類型有關)


1.編譯時類型由聲明該變量時使用的類型決定,運行時類型由實際賦給該變量的對象決定。

         當編譯時類型和運行時類型不一致時,就會出現所謂的多態。

 

 

 因為子類是一個特殊的父類,因此java允許把一個子類對象直接賦給一個父類的引用變量,無需任何類型轉換(向上轉型)

 引用變量在編譯階段只能通過編譯時類型所具有的方法,但運行時則執行它運行時類型所具有的方法。因此,編寫java代碼時,引用變量只能

調用聲明該變量時所用類里包含的方法。

 2.編寫程序時,引用變量只能調用它編譯時類型的方法,而不能調用運行時類型的方法,即使實際所引用的對象確實包含該方法。

         如果需要讓這個引用變量調用它運行時類型的方法,也就是要把一個父類對象賦給子類對象時,則必須要把它強制類型轉換成運行時類型。(向下轉型)

      SubClass sb=(SubClass)ploymophicBc

  注意:引用類型之間的轉換只能在有繼承關系的兩個類型之間進行。如果試圖把一個父類實例轉換成子類類型,則這個對象必須實際上是子類實例才行(即編譯時類型為父類類型,而運行時類型為子類類型)

 使用instanceof運算符先進行判斷是否可以成功轉換,增強程序健壯性


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com