在 Java 语言 中,我们的对象是有对应的类型的,也就是说每个对象都会有具体的类与之对应。instanceof 就是用来判断该对象是哪个类的对象。
对象 instanceof 类 //返回 boolean 类型
参数 | 描述 |
---|---|
对象 | 具体的一个对象,要判断是什么类型的对象 |
instanceof | instanceof 关键字 |
类名 | 被判断对象属于哪个类的名字 |
instanceof 执行后的返回值为 boolean 类型的。如果是 true 就表明该对象是该类的对象,如果是 false 表示不是。
我们定义一个父类
package com.haicoder.net.changetype;
public class FatherClass {
public void fun1(){
System.out.println("调用父类的 fun1 方法");
}
public void fun2(){
System.out.println("调用父类里面的 fun2 方法");
}
}
定义一个子类
package com.haicoder.net.changetype;
public class ChildClass extends FatherClass {
public void fun1(){
System.out.println("调用子类的 fun1 方法");
}
public void fun3(){
System.out.println("调用子类的 fun3 方法");
}
}
定义一个测试类
package com.haicoder.net.changetype;
public class TestMain {
public static void main(String[] args) {
System.out.println("嗨客网(www.haicoder.net) \n");
FatherClass fatherClass = new ChildClass();
System.out.println("fatherClass instanceof FatherClass : " + (fatherClass instanceof FatherClass));
System.out.println("fatherClass instanceof ChildClass : " + (fatherClass instanceof ChildClass));
FatherClass fatherClass1 = new FatherClass();
System.out.println("fatherClass1 instanceof FatherClass : " + (fatherClass1 instanceof FatherClass));
System.out.println("fatherClass1 instanceof ChildClass : " + (fatherClass1 instanceof ChildClass));
}
}
运行结果如下:
从运行结果中我们可以看到,通过子类实例化的对象同时也是子类和父类的实例,所以可以直接进行向上或向下转型,如果直接使用父类实例化本类对象,则一定就不再是子类的实例了。
在进行 类型转换 的时候,我们可以借助 instanceof 来判断对应的对象是否可以属于要被转换对象的类。如果是就可以转型,如果不是就不能。