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

Java 继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

Java 子类强转父类
父类引用指向子类对象:
java中子类强转父类,实际上依然是子类;
该引用只能调用父类中定义的方法和变量;
如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;

Java 父类强转子类
只有父类对象本身就是用子类new出来的时候, 才可以在将来被强制转换为子类对象.

在DTO层与entity层分开时,DTO层继承entity,再给DTO层赋值时不能直接将entity转为dto,因为子类有些属性,父类没有,所以强转会出现错误。
但是又需要这样强转,怎么办呢,如果手动的取出父类的属性依次填入,这样很耗时。

解决方案是先把父类转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;
    }
}


你可能感兴趣的:(java)