将一个子类的引用付给一个超类变量,编译器是允许的。
但将一个超类的引用赋给一个子类变量,必须进行类型转换。
Manager boss=new Manager();
Employee staff= new Employee[2];
staff[0]=boss;
staff[1]=new Employee();
Manager b=(Manager)staff[0];//强制类型转换
Manager c=(Manager)staff[1];//错误
因此在进行类型转换之类,先查看一下是否能够成功的转换,这个过程简单的使用instanceof运算就可以实现。
if(staff[1] instanceof Manager){
Manager c=(Manager)staff[1];
}
java的类型转换类似于C++中对进行dynamic_cast