java 子类强转父类 父类强转子类

Java 继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
Java 子类强转父类
父类引用指向子类对象:
java中子类强转父类,实际上依然是子类;
该引用只能调用父类中定义的方法和变量;
如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;
Java 父类强转子类
只有父类对象本身就是用子类new出来的时候, 才可以在将来被强制转换为子类对象.
在DTO层与entity层分开时,DTO层继承entity,再给DTO层赋值时不能直接将entity转为dto,因为子类有些属性,父类没有,所以强转会出现错误。
但是又需要这样强转,怎么办呢,如果手动的取出父类的属性依次填入,这样很耗时。
【java 子类强转父类 父类强转子类】解决方案是先把父类转jsonstring再把jsonstring转子类。剩余的子类值可以设定进去。这样两个类的重复值就不用重新设置值了。

import com.alibaba.fastjson.JSONObject; public class test {public static void main(String[] args) { B b = new B(); b.setB("1"); String ob = JSONObject.toJSONString(b); A a = (A)JSONObject.parseObject(ob, A.class); a.setA("2"); System.out.println(a.getA()); } }class A extends B { private String a; public String getA() { return a; }public void setA(String a) { this.a = a; } }class B { private String b; public String getB() { return b; }public void setB(String b) { this.b = b; } }

    推荐阅读