java关键字-instanceof
主要作用
A instanceof B主要判断以下三个内容(即左边的类型A能否转换为右边的B):
- 判断对象A是否是B类的对象;
- 判断对象A实现了B接口;
- 判断对象A是否继承了B类;
A表示对象,B表示接口/类,如果A对象为B的对象,或者间接/直接实现B接口,或者间接/直接继承B类,则返回true,否则返回false
代码举例
Animal接口
package com.cyy.instance;
public interface Animal {
public void eat();
}
Animal接口的两个实现类:Cat和Dog
package com.cyy.instance;
public class Cat implements Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
package com.cyy.instance;
public class Dog implements Animal{
@Override
public void eat() {
System.out.println("狗吃骨头");
}
}
cat的两个实现类:BlackCat和WhiteCat
package com.cyy.instance;
public class BlackCat extends Cat{
}
package com.cyy.instance;
public class WhiteCat extends Cat{
}
WhiteCat的实现类:WhiteBlackCat
package com.cyy.instance;
public class WhiteBlackCat extends WhiteCat{
}
测试
package com.cyy.instance;
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
WhiteCat whiteCat = new WhiteCat();
BlackCat blackCat = new BlackCat();
WhiteBlackCat whiteBlackCat = new WhiteBlackCat();
//1.判断对象cat是否是Cat类的对象
boolean b1 = cat instanceof Cat;
System.out.println(b1);//true
//2.判断dog和cat是否实现了Animal接口
boolean b2 = cat instanceof Animal;
boolean b3 = dog instanceof Animal;
System.out.println(b2);//true
System.out.println(b3);//true
//3.判断whiteCat和blackCat是否继承了Cat
boolean b4 = whiteCat instanceof Cat;
boolean b5 = blackCat instanceof Cat;
System.out.println(b4);//true
System.out.println(b5);//true
//4.间接实现接口,判断whiteCat和blackCat是否可以转换为Animal
boolean b6 = whiteCat instanceof Animal;
boolean b7 = blackCat instanceof Animal;
System.out.println(b6);//true
System.out.println(b7);//true
//间接继承类:判断
boolean b8 = whiteBlackCat instanceof Cat;
System.out.println(b8);//true
}
}