向上轉型和向下轉型

2021-07-10 19:01:46 字數 769 閱讀 3962

向上轉型:子類向上轉型為父類

注意點:轉型後父類與子類的同名函式中,子類的函式可以覆蓋父類的函式,但子類自己定義的函式將被隱藏

class a

public void a2()

}class b extends a

public void b2()

}public class c

}

向下轉型:父類被強制轉型為子類,成功轉型後可以成為子類的乙個物件
注意點:
轉型之前要進行型別檢驗,對於型別不同的不能進行轉型。
這是因為a1指向乙個子類b的物件,所以子類b的例項物件b1當然也可以指向a1。而a2是乙個父類物件,子類物件b2不能指向父類物件a2。
a a1 = new b(); // 向上轉型 

a1.amthod(); // 呼叫父類amthod(),a1遺失b類方法bmethod1()、bmethod2()

b b1 = (b) a1; // 向下轉型,編譯無錯誤,執行時無錯誤

b1.amthod(); // 呼叫父類a方法

b1.bmethod1(); // 呼叫b類方法

b1.bmethod2(); // 呼叫b類方法

a a2 = new a();

b b2 = (b) a2; // 向下轉型,編譯無錯誤,執行時將出錯

b2.amthod();

b2.bmethod1();

b2.bmethod2();

向上轉型和向下轉型

例如我現在有兩個類,他們之間是繼承的關係 class animal class dog extends animal void bark 通俗地講,向上轉型就是把子類的物件轉化為父類的物件,如 animal animal new dog 但是注意,向上轉型後,父類只能訪問與子類共有的方法,如以下 就...

向上轉型和向下轉型

在j a中,繼承是乙個重要的特徵,通過extends關鍵字,子類可以復用父類的功能,如果父類不能滿足當前子類的需求,則子類可以重寫父類中的方法來加以擴充套件。而在應用中就存在著兩種轉型方式。比如有父類parent,子類child1.向上轉型 父類的引用指向子類的例項parent p new chil...

向下轉型,向上轉型

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