强制类型转化:将一个类型强制转换为另一类型的过程称为类型强制转换。
例如将double转换为int时,舍弃了小数部分,那么跟着这个类似,类也有强制转换一说。将一个子类的引用赋给一个超类的变量,编译器时允许的。但是将一个超类的引用赋给一个子类变量时,必须进行类型转换,这样才能够通过运行时的检查。
注意:
在继承链上试图进行向下的类型转换时,一定要注意(假设Manage时Person的子类):
Person p = new Person();
Manage m = p;
这样ide的检测不会报错,但是实际却会产生一个ClassCastException的异常,这是因为JAVA规定父类不能转化为子类,就像动物里边包括哺乳动物,哺乳动物不能包括所有动物一样。
因此我们在这款i需要用instanceof进行判断:
if(p instanseof Manage){
m = p;
}
总结:
1、只能在继承链中进行类型转换
2、在超类转成子类时,应该使用instanceof进行检查