基础问题,帮忙看一下,为什么编译可以过,而运行会错呢,在线等......

lizhaogui 2005-11-01 01:38:46
class Base {}
  class Sub extends Base {}
  class Sub2 extends Base {}
  public class CEx{
   public static void main(String argv[]){
   Base b = new Base();
   Sub s = (Sub) b;
   }
  }
...全文
185 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsrj 2005-11-01
  • 打赏
  • 举报
回复
mark
yy80680169 2005-11-01
  • 打赏
  • 举报
回复
迷糊,好像是向下转换的问题
yyouyou 2005-11-01
  • 打赏
  • 举报
回复
Sub s = (Sub) b;
这个什么意思呀

把类b强制转换成类Sub类型,这属于向下转型,不行的.
wangyabing 2005-11-01
  • 打赏
  • 举报
回复
Sub s = (Sub) b;
这个什么意思呀
我菜呀
fankobe 2005-11-01
  • 打赏
  • 举报
回复
Sub s = (Sub) b;

java规定父类不能向下转型为子类的对象。
yanxiazhiqiu 2005-11-01
  • 打赏
  • 举报
回复
这个是有ClassCastException,如果非要这句应该是这样的:
Base b=new Sub();
Sub s=(Sub)b;

.............
dragonecho1982 2005-11-01
  • 打赏
  • 举报
回复
你可以这样:
Sub s = new Sub();
Base b = (Base) s;
但不能像你那样,原因同楼上,
建议看看thinking in java 上面的详细的说明
无欲则钢 2005-11-01
  • 打赏
  • 举报
回复
Base是Sub的父类
Sub可以造型到Base
你可以代替你爸爸工作,你爸爸不能代替你工作,因为你会的更多

62,614

社区成员

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

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