作用:判斷一個對象是否屬于一個類
格式:對象 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());
}
}
運作結果