對象的向上轉型、向下轉型
阿新 • • 發佈:2019-03-28
引用 sca sta 名稱 ren 強制 ani animal 向上轉型
其實就是多態寫法
1、向上轉型,也就是創建一個子類對象,把他當做父類來看待,向上轉型一定是安全的,但是一旦向上轉型為父類對象,就不能調用子類原本特有的方法
父類引用指向子類對象
Parent p = new Children();
Animal a = new Dog();// 這個a不能調用Dog類特有的狗吃屎方法
2、向下轉型,其實是一個還原的動作,也就是將父類對象還原為本來的子類對象
格式:
子類名稱 對象名 = (子類名稱)父類對象; Animal animal = new Dog();// a dog Dog dog = (Dog)animal;// 向下轉型為原來的狗 // Cat cat = (Cat)animal; // 這是錯誤寫法 //本來人家是狗,向上轉型為動物,你要強制把人家先下轉型為貓,就會報錯(類轉換異常java.lang.classcastexpction),應該是一個還原的過程
3.如何知道一個父類的引用原來是什麽子類,這樣才可以安全的向下轉型
if(animal instanceof Dog) {// 如果animal本來是一只狗(Dog類)
Dog dog = (Dog)animal;
}
if(animal instanceof Cat) {// 如果animal本來是一只貓(Cat類)
Cat cat = (Cat)animal;
}
對象的向上轉型、向下轉型