《从C/C++到Java入门指南》- 23.关键字及其新特性
关键字及其新特性
因为将父类转型成子类后会得到一个ClassCastException
报错。所以向下转型前要养成一个好的习惯,那就是判断父类对象是否为子类对象的实例。
class Father {
}
class Child extends Father {
}
public class Main {
public static void main(String args[]) {
var father = new Father();
System.out.println(father instanceof Father);
System.out.println(father instanceof Child);
}
}
在这里就是判断了对象是否是用某个类来实例化的。
true
false
向上转型后会如何呢?
class Father {
}
class Child extends Father {
}
public class Main {
public static void main(String args[]) {
Father father = new Father();
Child child = new Child();
father = child;
System.out.println(father instanceof Father);
System.out.println(father instanceof Child);
System.out.println(child instanceof Child);
System.out.println(child instanceof Child);
}
}
true
true
true
true
可以看出,子类生成的对象会同时被判定为子类和父类的实例化。