天天看點

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關鍵字