2014年1月22日 星期三

[Java/多型性]多型性和強制轉換類別... (試過才知道)

真的稍微搞懂Java物件導向的人,都知道多型性是啥。

「參數型別宣告為父類別,則可以存入所有子類別。」.......講得很潦草,但大概是那樣。

可是這個特性具體來說會造成什麼影響?

子類別A強制轉型為子類別B時,會發生什麼事?

要測試多型性,自然要寫物件。以下有A(只是測試,就別花心思去取名了,)和A1/A2。

接著是初步測試用的程式......


可能有些人會理解、可能有些人不會,甚至有些人直接笑我蠢,但我真的想知道參數和函數對型別強制轉換的反應有何差異....

如果A2的test()內的傳入參數型別指定為A,因為多型性的理由,不用考慮一定都會順利執行。

但如果指定為A2,然後用A或A1強制轉型呢?



父類別似乎無法順利強制轉型為子類別,...不僅僅只是會損失資料而已,重新叫出了error訊息,訊息告訴我「無法如此轉型」。

顯然類別之間的型別轉換跟基礎數值的型別轉換不同,不是只會損失資料而已,而是根本上就限制了使用方式。

所以......所謂的「多型性」並不是種物件導向的特性,而是種人為操作/設計出來的規則。

不知道有沒有人能驗證這樣的解釋?



這次的實驗感覺很基礎很簡單很沒意義,但我不想知道怎樣可以成功,不想知道怎樣可以搞出「讓世人讚嘆的多型性應用」,但我對「怎樣操作多型性會失敗」很有興趣。就.......「浪費時間」吧!

沒有留言:

張貼留言