用instanceof關鍵字進行判斷
阿新 • • 發佈:2022-05-24
/*
如何才能知道一個父類引用的物件,本來是什麼子類?
格式:
物件 instanceof 型別
這將會得到一個boolean值結果,也就是判斷前面的物件能不能當做後面型別的例項。
*/
public class Demo02Instanceof {
public static void main(String[] args) {
// Animal animal=new Cat();//本來是一隻貓
// animal.eat();//貓吃魚
Animal animal=new Dog();//本來是一隻狗
animal.eat();//狗吃骨頭
//如果希望呼叫子類特有方法,需要向下轉型
//判斷一下父類引用animal本來是不是Dog
if(animal instanceof Dog){
Dog dog=(Dog)animal;
dog.watchHouse();//狗看家
}
//判斷一下animal本來是不是Cat
if(animal instanceof Cat){
Cat cat=(Cat)animal;
cat.CatchMouse();//貓抓老鼠
}
//結果:
//狗吃骨頭
//狗看家
giveMeAPet(new Dog());
}
public static void giveMeAPet(Animal animal){
if(animal instanceof Dog){
Dog dog=(Dog) animal;
dog.watchHouse();
}
if(animal instanceof Cat){
Cat cat=(Cat)animal;
cat.CatchMouse();
}
}
}