m0_60078520 2021-11-20 11:57 采纳率: 66.7%
浏览 12
已结题

Java尝试将父类变成子类,但是一直运行失败

Java将父类转化为子类,编译没有报错,但是运行一直失败,可以帮忙讲解一下吗,感谢!

img

img

img

  • 写回答

1条回答 默认 最新

  • 能力工场小马哥 2021-11-20 13:31
    关注

    1/0也可以通过编译, 但是运行是不合逻辑的...
    同样的, 转换类型这件事情, 语法上可以转的, 编译可以通过, 但是逻辑上不对的, 会抛错
    爹会的事情, 儿子继承了必然会做; 因为继承的本质是一种扩展和增强, 儿子会做的事情, 爹不一定会做, 所以, 爹替代儿子去干活, 会出现问题
    你的代码: son指向了old, (爹以儿子的名义去干活了, 有的功能不具备, 会出现问题)

    所以, 第二张图中: 19行代码, 你检测一下
    old instanceOf son1的返回结果是什么!

    System.out.println(old instanceof son1); 
    

    结果肯定是false, 也就是说, 父类old对象并非是子类son1类的实例, 所以, 不能转换.

    抛出的异常上也有明确注释: 不能转换为该子类的实例.

    Thrown to indicate that the code has attempted to cast an object to a subclass of which it is not an instance. 
    For example, the following code generates a ClassCastException:
           Object x = new Integer(0);
           System.out.println((String)x);
       
    Since:
    1.0
    Author:
    unascribed
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日
  • 创建了问题 11月20日

悬赏问题

  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写