Java中父类与子类的转换关系 | 父类强转子类

父类转子类

  • 父类强转子类的要求:父类必须是子类的实例,(换句话说就是需要强转的父类必须是子类构造出来的,它本身就是子类的实现)
  • 原理:父类的实现是父类的实例,和子类没有关系,不能直接强转
  //AA 父类
  public class AA {
    private String aa;

    public AA(){
        this.aa = "AA";
        System.out.println("父类构造");
    }
  //toString
  }
  //CC 子类
  public class CC extends AA{
      public CC() {
          System.out.println("CC子类构造");
      }
  }
  • 父类对象是子类实现 父类对象可以强转为子类对象
  public class BB {
      public static void main(String[] args) {
          //父类对象是子类实现
          AA a = (AA) new CC();
          //父类可以强转为子类
          CC cc = (CC) a;
          System.out.println(cc.toString());
      }
  }

  • 父类对象是父类实现 不能转为子类对象
  public class BB {
    public static void main(String[] args) {
        //父类对象是父类实现
        AA a =  new AA();
        //父类不可以强转为子类
        CC cc = (CC) a;
        System.out.println(cc.toString());
    }
}

  • Exception in thread "main" java.lang.ClassCastException: com.zhy.test.AA cannot be cast to com.zhy.test.CC
  • 根本原因,这个 a 实现和子类就没关系(你出去可以代表你爸,你爸还没生你呢怎么代表你)

解决方法:

  • 主要的解决方法是规规矩矩按子类实现来
  • 如果特殊情况可以先把父类转成json字符串,再赋值转换成子类对象

本文作者:—清风碎心—

本文链接:https://www.cnblogs.com/zhy-god/p/14812408.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   —清风碎心—  阅读(3095)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.