关于强制类型转换的问题 我知道可以将一个子类的引用赋给你个超类变量,那么讲一个超类的引用赋给你个子类变量的进行类型转换,假如有一个类是Employee类 他的子类是Manager,而staff[1]是Employee的对象变量,那么Manager boss=(Manager)staff[1]这样子可以吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 编译都无法通过的,除非staff[1]这东西本来就指向的是子类,然后你再次向上转型让它指向了父类,这样的话就可以用你的那句话Manager boss=(Manager)staff[1]再次向下强转为子类。 这个要具体情况具体分析如果你的staff[1]指向的是一个Manager的引用,那么是可以的如果你的staff[1]指向的是一个Employee的引用,那么是不可以的用代码简单说明Employee[] staff = new Employee[2];staff[0] = new Employee(); //这个是不能强行转为Manager的,因为staff[0]指向的是Employee引用staff[1] = new Manager(); //这个是可以转为Manager的,因为staff[1]指向的是Manager引用如果你不知道staff[1]指向的是什么引用,可以加个if判断如if (staff[1] instance of Manager) { Manager boss=(Manager)staff[1]} applet调用dll中的接口出错 MyEclipse5.5注册码 关于paint()、画图的一个问题 如何生成spring ioc格式的配置文件??? 关于JAVA中的保留字 JDK应该下载哪个? 高手赐教:如何用jdbc调用Access中的"OLE对象"? 从表单中提交出去,如果控件值中带有空格, 调查!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! GC日志 关于Cloneable接口的问题 interface作为方法的参数?
如果你的staff[1]指向的是一个Manager的引用,那么是可以的
如果你的staff[1]指向的是一个Employee的引用,那么是不可以的
用代码简单说明
Employee[] staff = new Employee[2];
staff[0] = new Employee(); //这个是不能强行转为Manager的,因为staff[0]指向的是Employee引用
staff[1] = new Manager(); //这个是可以转为Manager的,因为staff[1]指向的是Manager引用
如果你不知道staff[1]指向的是什么引用,可以加个if判断
如
if (staff[1] instance of Manager) {
Manager boss=(Manager)staff[1]
}