关于强制类型转换的问题

qiullll 2010-04-05 12:18:22
我知道可以将一个子类的引用赋给你个超类变量,那么讲一个超类的引用赋给你个子类变量的进行类型转换,假如有一个类是Employee类 他的子类是Manager,而staff[1]是Employee的对象变量,那么Manager boss=(Manager)staff[1]这样子可以吗?
...全文
149 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
duyu1025 2010-04-06
  • 打赏
  • 举报
回复
在向上转型的时候就把子类与父类不同的成员变量和方法就隐藏了
SambaGao 2010-04-06
  • 打赏
  • 举报
回复
像这样的题就好用泛型
Trinx 2010-04-05
  • 打赏
  • 举报
回复
编译都无法通过的,除非staff[1]这东西本来就指向的是子类,然后你再次向上转型让它指向了父类,这样的话就可以用你的那句话Manager boss=(Manager)staff[1]再次向下强转为子类。
Trinx 2010-04-05
  • 打赏
  • 举报
回复
这个真不行!
zhongyucai 2010-04-05
  • 打赏
  • 举报
回复
用父类应用指向子类对象这样就可以.....................
soft200816 2010-04-05
  • 打赏
  • 举报
回复
不用强制类型转换,多态的知识,子类是父类的类型!
无聊司马 2010-04-05
  • 打赏
  • 举报
回复
三楼说的很有道理
tcm441224375 2010-04-05
  • 打赏
  • 举报
回复
不可以将一个超类的引用强制转为子类引用
qybao 2010-04-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 qiullll 的回复:]
我知道可以将一个子类的引用赋给你个超类变量,那么讲一个超类的引用赋给你个子类变量的进行类型转换,假如有一个类是Employee类 他的子类是Manager,而staff[1]是Employee的对象变量,那么Manager boss=(Manager)staff[1]这样子可以吗?
[/Quote]
这个要具体情况具体分析
如果你的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]
}

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧