Java面向对象——instanceof操作符

有了对象的多态性以后,内存中实际上是加载了子类中特有的属性和方法,但是由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法,子类特有的属性和方法不能调用。

在基本数据类型中两种类型之间有自动类型提升和强制类型转换:

 而在对象中就有向下转型

此时需要用到向下转型:使用强制类型转换符

Person p1=new Man();    // Man是Person的子类型
Man m1=(Man)p1;
m1.earnMoney();    //调用子类中的方法

 使用强转是,可能出现ClassCastException的异常

为了保证向下转型不出现异常,需要在向下转型之前,先进行Instanceof的判断,true就进行向下转型,否则不进行转型

 instanceof的使用:

if(p2 instanceof Woman){
    Woman w1=(Woman)p2;
    w1.goShopping();
}    
原文地址:https://www.cnblogs.com/codexlx/p/13536313.html