子類引用的物件轉換為父類型別稱為向上轉型。通俗地說就是是將子類物件轉為父類物件。此處父類物件可以是介面。
向上轉型就是具體類向抽象類的轉換。
語法:父類 物件 = new 子類(); 例如 :animal hern = new dog(); //向上轉型
注意:1、向上轉型時,子類單獨定義的方法會丟失。
2、子類引用不能指向父類物件。
package a;
public class human
}class male extends human
}class famale extends human
}
package a;
class animal
}class dog extends animal
public void fly()
}public class hern
public static void main(string args)
}
向下轉型是把父類物件轉為子類物件。(注意!這裡是有坑的。)
向下轉型就是講抽象類轉換為具體類。
向下轉型後因為都是指向子類物件,所以呼叫的全是子類的方法
語法:子類 物件 = (子類)父類物件; 例如:dog hern2 = (dog)hern; //向下轉型
將父類物件強制轉換為某個子類物件,這種方式稱為顯示型別轉換。
注意: 1、向下轉型的前提是父類物件指向的是子類物件(也就是說,在向下轉型之前,它得先向上轉型)
2、向下轉型只能轉型為本類物件(貓是不能變成狗的)。
3、子類物件是父類的乙個例項,但是父類物件不一定是子類的例項。
4、如果將父類物件直接賦予子類,會發生編譯器錯誤,因為父類物件不一定是子類的例項。
package a;
class animal
}class dog extends animal
public void fly()
}public class hern
public static void main(string args)
}
向下轉型,向上轉型
package cn.dali.code24 向上轉型 父類引用指向子類物件 格式 父類名稱 物件名 new 子類名稱 向下轉型 當我們使用父類引用指向子類物件的時候,我們想把父類物件轉為子類物件時,需要向下轉型 向下轉型就是乙個還原動作。格式 子類名稱 物件名 子類名稱 父類物件 注意 乙個父類有...
向上轉型向下轉型
在引用資料型別中,只有有繼承關係的型別才能進行型別轉換 型別轉換只是轉換看待物件的引用的型別,物件本身沒有也不可能參與轉換 父類引用可以自動指向子類物件,但只能訪問和呼叫到來自於父類的屬性和行為 子類的引用不能指向父類或其它子類物件,就算強轉也會導致執行失敗並丟擲classcastexception...
向上轉型和向下轉型
向上轉型 子類向上轉型為父類 注意點 轉型後父類與子類的同名函式中,子類的函式可以覆蓋父類的函式,但子類自己定義的函式將被隱藏 class a public void a2 class b extends a public void b2 public class c 向下轉型 父類被強制轉型為子類...