一、作用
判断一个对象属于哪个类的实例
二、使用方法
对象 instanceof 类 //返回的是Boolean类型
三、代码示例
package lkp;
//定义一个类A
class A{
public void fun1(){
System.out.println("A——1");
}
public void fun2(){
this.fun1();
}
}
//定义一个子类B,继承A
class B extends A{
public void fun1(){//覆写父类中的fun1方法
System.out.println("B——1");
}
public void fun3(){//子类自己定义的方法
System.out.println("B——3");
}
}
//定义一个子类C,继承A
class C extends A{
public void fun1(){//覆写父类的fun1方法
System.out.println("C——1");
}
public void fun4(){//子类自己定义的方法
System.out.println("C——4");
}
}
class Test{
public static void main(String args []){
A a = new B();//向上转型实例化A类对象
System.out.println("A a = new B():" + (a instanceof A));
System.out.println("A a = new B():" + (a instanceof B));
A a1 = new A();//构造实例化对象
System.out.println("A a1 = new A():" + (a1 instanceof A));
System.out.println("A a1 = new A():" + (a1 instanceof B));
}
}
四、在向下转型前进行验证
package lkp;
//定义一个类A
class A{
public void fun1(){
System.out.println("A——1");
}
public void fun2(){
this.fun1();
}
}
//定义一个子类B,继承A
class B extends A{
public void fun1(){//覆写父类中的fun1方法
System.out.println("B——1");
}
public void fun3(){//子类自己定义的方法
System.out.println("B——3");
}
}
//定义一个子类C,继承A
class C extends A{
public void fun1(){//覆写父类的fun1方法
System.out.println("C——1");
}
public void fun4(){//子类自己定义的方法
System.out.println("C——4");
}
}
class Test{
public static void main(String args []){
fun(new B());//传递B类的实参,产生向上转型
fun(new C());//传递C类的实参,产生向上转型
}
public static void fun(A a){//接收父类的对象,分别调用各个子类单独定义的方法
a.fun1();
if(a instanceof B){//判断是否是B类的实例
B b = (B)a;//进行向下转型
b.fun3();//调用子类自己定义方法
}
if(a instanceof C){//判断是否是C类的实例
C c = (C)a;//进行向下转型
c.fun4();//调用子类自己定义的方法
}
}
}