1. 程式人生 > >對象的向上轉型、向下轉型

對象的向上轉型、向下轉型

引用 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;
}

對象的向上轉型、向下轉型