再論向上轉型

2021-08-04 06:17:02 字數 349 閱讀 8319

向上轉型的好處,已經在這篇文章(這是乙個鏈結)

的**中演示了,但是沒有說不好處。

現在就說說不好處,以鏈結中的**為背景,

animal a1 = new lion();

animal a2 = new mokeny();

new出來的lion和mokey物件向上轉型為animal物件,可以使用統一的eat(),讓jvm去分辨到底是哪個子類呼叫的eat()。

但是,but,向上轉型之後的a1、a2它們對應類中含有的方法、屬性,而其父類即animal中沒有的方法、屬性,a1、a2將呼叫不到。也就是講,子類向上轉型後無法訪問自有而其父類沒有的方法。

向下轉型,向上轉型

package cn.dali.code24 向上轉型 父類引用指向子類物件 格式 父類名稱 物件名 new 子類名稱 向下轉型 當我們使用父類引用指向子類物件的時候,我們想把父類物件轉為子類物件時,需要向下轉型 向下轉型就是乙個還原動作。格式 子類名稱 物件名 子類名稱 父類物件 注意 乙個父類有...

向上轉型向下轉型

在引用資料型別中,只有有繼承關係的型別才能進行型別轉換 型別轉換只是轉換看待物件的引用的型別,物件本身沒有也不可能參與轉換 父類引用可以自動指向子類物件,但只能訪問和呼叫到來自於父類的屬性和行為 子類的引用不能指向父類或其它子類物件,就算強轉也會導致執行失敗並丟擲classcastexception...

向上轉型和向下轉型

向上轉型 子類向上轉型為父類 注意點 轉型後父類與子類的同名函式中,子類的函式可以覆蓋父類的函式,但子類自己定義的函式將被隱藏 class a public void a2 class b extends a public void b2 public class c 向下轉型 父類被強制轉型為子類...