关于多态的问题???

applezh 2003-08-26 09:23:24
Employee e;
e = new Manager(...);

Manager是Employee的子类
这种情况下我可不可以 象普通情况下一样 用e来访问Manager的方法???

Employee[] = staff new Employee[3];
Manager boss = new Manager(...);
staff[0]=boss;
这种情况下 为什么staff[0]不能访问Manager类的方法???
...全文
20 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuki 2003-08-27
  • 打赏
  • 举报
回复
子类所分配到的存储空间大于父类的,
所以在未进行强制转换时,子类只有使用自己的方法的权利。
但强制转换后,就可以使用了。
byg007 2003-08-26
  • 打赏
  • 举报
回复
第一种情况,e不能访问manager自己新增的方法,只能使用父类中已定义的方法,因为在e = new Manager(...);时发生向上转型。
第二种情况也是一样,在staff[0]=boss;时也发生向上转型,向上转型会去掉子类的型别信息,使它只能有父类的性质。

topbit 2003-08-26
  • 打赏
  • 举报
回复
(Manager)staff[0]可以用Manager的方法。
staff[0]不能用Manager的方法。
applezh 2003-08-26
  • 打赏
  • 举报
回复
那请问staff[0]为什么不能直接访问Manager类的方法
它的确是指向一个Manager对象的呀???

62,615

社区成员

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

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