青草萋萋 2017-11-13 06:54 采纳率: 0%
浏览 2677

类之间父强转子的问题

普通类,父不能强转子,只有父对象实例化成子时,才可父转子,
那么父,子都是接口呢?
父,子都是抽象类呢,这些,父可以强转子吗?
希望详细回答,谢谢,

  • 写回答

1条回答 默认 最新

  • 子心之泪 2017-11-13 08:13
    关注

    Java中父类强制转换为子类的可能

    之前徒弟问了一个问题, 在Java中, 父类对象到底能不能转换成对应的子类对象?

    到底能不能, 今天就来说说这个问题, 先看下面一段代码:

    复制代码
    package cn.com.hanbinit.test;
    /**

    • 检验父类是否可以强转为子类
    • @author icer
      *
      */
      public class ConvertPro extends Father {

      public static void main(String[] args) {
      Father father = new Father();
      Father father1 = new ConvertPro();
      ConvertPro son = new ConvertPro();
      // ConvertPro son1 = (ConvertPro) new Father();
      // son = (ConvertPro)father;
      son = (ConvertPro) father1;
      }
      }

    /**

    • 父类
    • @author icer
    • */
      class Father {
      private String name;

      public String getName() {
      return name;
      }

      public void setName(String name) {
      this.name = name;
      }
      }
      复制代码
      上面代码注释掉的两行是会运行错误的. 根据代码显示, 只有我们的父类对象本身就是用子类new出来的时候, 才可以在将来被强制转换为子类对象.

    子类继承父类的所有(包括属性以及方法), 也就是说子类包含的内容应该是比父类要大的. 如果正常环境下, 把一个父类转换成子类一定会损失精度. 但是如果父类对象本身就是用

    子类去new出来的, 就类似于一个本来就是儿子角色的人, 去装了一会儿父亲, 这个角色是可以在未来转换回去的, 但是一个父亲, 永远不可能去装儿子的.

    评论

报告相同问题?

悬赏问题

  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误