天天看点

Java面向对象-instanceof关键字

作用:判断一个对象是否属于一个类

格式:对象 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));
		 
	}
}
           

运行结果

Java面向对象-instanceof关键字

通过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());
	}
}

           

运行结果

Java面向对象-instanceof关键字