作用:判断一个对象是否属于一个类
格式:对象 instanceof 类 返回布尔类型
先建一个父类Animal,以及子类Dog,Cat类:
public class Animal {
public void say() {
System.out.println("我是一只动物");
}
}
public class Dog extends Animal{
public void say() {
System.out.println("我是一只狗");
}
}
public class Cat extends Animal{
public void say() {
System.out.println("我是一只猫");
}
}
建个测试类
public class test3 {
public static void main(String[] args) {
Animal d=new Dog();
System.out.println("d是否属于Animal类:"+(d instanceof Animal));
System.out.println("d是否属于Dog类:"+(d instanceof Dog));
System.out.println("d是否属于Cat类:"+(d instanceof Cat));
}
}
运行结果
通过instanceof我们可以确保向下转型的不出问题
我们给Dog类,Cat类加各自的方法
public class Dog extends Animal{
public void say() {
System.out.println("我是一只狗");
}
public void f1() {
System.out.println("汪汪");
}
}
public class Cat extends Animal{
public void say() {
System.out.println("我是一只猫");
}
public void f2() {
System.out.println("喵喵");
}
}
public class test4 {
public static void dosomething(Animal animal) {
animal.say();
if(animal instanceof Dog) {
((Dog) animal).f1();
}else if(animal instanceof Cat) {
((Cat) animal).f2();
}
}
public static void main(String[] args) {
Animal d=new Dog();
System.out.println("d对象是否属于Animal类:"+(d instanceof Animal));
System.out.println("d对象是否属于Dog类:"+(d instanceof Dog));
System.out.println("d对象是否属于Cat类:"+(d instanceof Cat));
dosomething(new Dog());
dosomething(new Cat());
}
}
运行结果