向下转型的使用和instanceof关键字的使用
-
向下转型,使用强制类型转换符(将父类转换为子类)
但是这样转是会有风险的,一旦转换的两者之间无关系或者父类转化为子类后,子类使用的方法父类没有,就会出错。
-
instanceof
a instanceof A
:判断对象a是否是类A的实例,如果是,则返回true,如果不是,返回false。使用场景:为了避免在向下转型时出现ClassCastException的异常,我们在向下转型之前,先进行instanceof的判断,一旦返回true,就进行向下转型,如果返回false,则不转型。
如果
a instanceof A
返回true,则a instanceof B
也返回true,其中类B是类A的父类。
Smile fa = new Face();
if( fa instanceof Face){
Smile sm1 = (Smile)fa;
sm1.smile();
}
else System.out.println("gg");