当程序中执行向下转型操作时,如果父类对象不是子类对象的实例,就会发生 ClassCastExcepion
异常,所以在执行向下转型之前需要判断父类对象是否为子类对象的实例。
myobject instanceof ExampleClass
例子
class Quadrangle{ //四边形类
public static void draw(Quadrangle q) {//四边形类方法
//SomeSentence
}
}
class Square extends Quadrangle{
//SomeSentence
}
class Anything{
//SomeSentence
}
public class Parallelogram extends Quadrangle {//平行四边形类
public static void main(String[] args) {
Quadrangle q = new Parallelogram();
//判断父类对象是否为 Parallelogram 子类的一个实例
if (q instanceof Parallelogram){
Parallelogram p = (Parallelogram)q;//向下转型操作
}
//判断父类对象是否为 Square 子类的一个实例
if (q instanceof Square) {
Square s = (Square)q;
}
}
}