天天看點

向上轉型與向下轉型

子類引用的對象轉換為父類類型稱為向上轉型。通俗地說就是是将子類對象轉為父類對象。此處父類對象可以是接口。

向上轉型就是具體類向抽象類的轉換。

文法:父類   對象  = new 子類();  例如 :Animal hern = new Dog(); //向上轉型

注意:1、向上轉型時,子類單獨定義的方法會丢失。

            2、子類引用不能指向父類對象。

向下轉型是把父類對象轉為子類對象。(注意!這裡是有坑的。)

向下轉型就是講抽象類轉換為具體類。

向下轉型後因為都是指向子類對象,是以調用的全是子類的方法

文法:子類 對象 = (子類)父類對象;    例如:Dog hern2 = (Dog)hern; //向下轉型

将父類對象強制轉換為某個子類對象,這種方式稱為顯示類型轉換。

注意: 1、向下轉型的前提是父類對象指向的是子類對象(也就是說,在向下轉型之前,它得先向上轉型)

            2、向下轉型隻能轉型為本類對象(貓是不能變成狗的)。

            3、子類對象是父類的一個執行個體,但是父類對象不一定是子類的執行個體。

            4、如果将父類對象直接賦予子類,會發生編譯器錯誤,因為父類對象不一定是子類的執行個體。​​​​​​​