向上轉型與向下轉型

2021-08-20 11:08:26 字數 1126 閱讀 5155

子類引用的物件轉換為父類型別稱為向上轉型。通俗地說就是是將子類物件轉為父類物件。此處父類物件可以是介面。

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

語法:父類   物件  = 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 向下轉型 父類被強制轉型為子類...