Java多態對象的類型轉換

在之前,我們講Java包裝類得時候,大概瞭解瞭如果把一個字符串類型的數值轉換成int類型,這樣也叫做類型轉換。

如果不瞭解什麼是Java的包裝類,可以查看我之前寫的Java包裝類和基礎數據類型

我們可以用Integer類的方法來轉換類型。

String str="100";
int n=Integer.valueOf(str);
System.out.println(n);

但是我們現在要講的是Java多態對象的類型轉換。

這裏所說的對象類型轉換,是指存在繼承關係的對象,不是任意類型的對象。當對不存在繼承關係的對象進行類型轉換時,Java運行會拋出 java.lang.ClassCastException 異常。

在繼承鏈中我,我們將子類向父類轉換稱爲“向上轉型”,將父類向子類轉換稱爲“向下轉型”。

很多時候,我們會將變量定義爲父類的類型r,確引用子類的對象,這個過程就是向上轉型。程序運行時通過動態綁定來實現對子類方法的調用,也就是多態性。

然而有些時候爲了完成某些父類沒有的功能,我們需要向上轉型的子類對象再轉成子類,調用子類獨有的方法,這就是向下轉型。

注意:不能直接將父類的對象強制轉換成子類對象,只能將向上轉型後的子類對象再轉換成子類類型。也就是說,子類對象必須向上轉型後,才能向下轉型。

public class Demo1 {

	public static void main(String[] args) {
		Father father=new Father();
		Son son=new Son();
		
		//向上轉型
		Father father1=son;
		
		//不能直接向上轉型,會拋 java.lang.ClassCastException 異常
		//Son son1=(Son)father;
		
		//需要先向上轉型,才能向下轉型
		father=son;
		Son son2=(Son)father;

	}

}
class Father { }//父類
class Son extends Father { }//子類
總結:對象的類型轉換在程序運行時檢查,向上轉型會自動進行,向下轉型的對象必須是當前引用類型的子類。
發佈了44 篇原創文章 · 獲贊 88 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章