8 多型物件的型別轉換

2021-06-23 05:57:06 字數 657 閱讀 4294

在你接收父類的乙個引用時,你可以通過使用 instanceof 運算子判定該物件實際上是你所要的子類,並可以用型別轉換該引用的辦法來恢復物件的全部功能。

public void method(employee e)

// rest of operation

}如果不用強制型別轉換,那麼引用 e.department 的嘗試就會失敗,因為編譯器不能將被稱做 department 的成員定位在 employee 類中。

如果不用 instanceof 做測試,就會有型別轉換失敗的危險。通常情況下,型別轉換乙個物件引用的嘗試是要經過幾種檢查的:

向上強制型別轉換類層次總是允許的,而且事實上不需要強制型別轉換運算子。可由簡單的賦值實現。

嚴格講不存在向下型別轉換,其實就是強制型別轉換,編譯器必須滿足型別轉換至少是可能的這樣的條件。比如,任何將 manager 引用型別轉換成 contractor 引用的嘗試是肯定不允許的,因為 contractor 不是乙個 manager。型別轉換發生的類必須是當前引用型別的子類。

如果編譯器允許型別轉換 , 那麼, 該引用型別就會在執行時被檢查 。比如,如果instanceof 檢查從源程式中被省略,而被型別轉換的物件實際上不是它應被型別轉換進去的型別,那麼,就會發生乙個執行時錯誤(exception)。異常是執行時錯誤的一種形式,這是後面章節的主題。

java學習 物件的型別轉換 多型

物件的型別轉換 1.子類能夠自動轉換成父類,子類的例項自動就是父類的例項 此時子類所過載的父類的方法仍然是所過載的方法,不會因為強制轉換而變成父類的方法的內容 2.在父類試圖強制轉換為子類後,編譯器不會 報錯,但是此時 如果試圖呼叫父類不存在僅在子類中存在的方法時,執行時就會報錯。此時可以使用ins...

8 物件導向 多型

1.定義 某一事物具有多種存在形態 2.體現 父類或者介面的引用指向其子類的物件 3.好處及弊端 提高 的擴充套件性,前期定義的 可以使用後期的內容 前期定義的內容不能呼叫後期子類的特有內容 4.轉型 對於轉型,始終都是子類物件在做著型別的變化 示例 abstract class animal cl...

多型以及型別轉換

向上轉型 平行四邊形也是一種型別的四邊形,所以可以將平行四邊形類的物件看作是乙個四邊形類的物件。這就相當於 quadrangle obj new parallelogram 就是把子類的物件賦值給父類型別的變數,這種技術稱為 向上轉型 由於向上轉型是從乙個較具體的類到較抽象的類之間的轉換,所以它總是...