Re: [問題] 不太懂怎麼把母class轉型成子class

作者: LPH66 (-6.2598534e+18f)   2014-11-23 15:24:27
你要問的應該是所謂的 downcast
Java 語法上使用一般的 cast 即可 (就是前面擺一對括號裡面放型態)
不過當來源跟目標都是 reference 型態且這兩種型態間沒有上下繼承關係的話
javac 會 compile error 告訴你無論如何這都轉不過去
如果是 upcast (轉成父類別) 那什麼事都沒有
(事實上 upcast 可以隱式進行, 這也是你已經在程式裡做過的)
downcast 時編譯會過, 但如果實際上轉不過去的話會扔 ClassCastException 出來
所以你其實只需要用普通的 cast 語法即可
如果要寫的小心一點就外面包個 try/catch 接 ClassCastException 處理錯誤狀況
要不然就是用 instanceof 先檢查那確實是你要的類別再轉
作者: wtchen (沒有存在感的人)   2014-11-23 19:31:00
感謝說明,已經解決了,我想我不應該用繼承,把母class內建到另一個class才是正確作法。
作者: LPH66 (-6.2598534e+18f)   2014-11-25 00:55:00
那這就是「繼承vs合成」的老問題了 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com