java用instanceof关键字进行类型判断
如何才能知道一个父类引用的对象,本来是什么子类?
格式:
对象 instanceof 类名称
这将会得到一个boolean值结果,也就是判断前面的对象能不能当做后面类型的实例。
1 2 3 4 5 6 7
| package cn.itcast.day10.demo06;
public abstract class Animal {
public abstract void eat();
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| package cn.itcast.day10.demo06;
public class Cat extends Animal { @Override public void eat() { System.out.println("猫吃鱼"); }
public void catchMouse() { System.out.println("猫抓老鼠"); } }
|
1 2 3 4 5 6 7 8 9 10 11 12
| package cn.itcast.day10.demo06;
public class Dog extends Animal { @Override public void eat() { System.out.println("狗吃SHIT"); }
public void watchHouse() { System.out.println("狗看家"); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| package cn.itcast.day10.demo06;
public class Demo02Instanceof {
public static void main(String[] args) { Animal animal = new Dog(); animal.eat();
if (animal instanceof Dog) { Dog dog = (Dog) animal; dog.watchHouse(); } 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(); } }
}
|