Java父类、子类转型的理解

2,107 阅读1分钟

子类转父类,没有风险。需要注意:父类对象引用的指向仍是子类对象地址,所以如果子类中重写了方法,父类对象调用的仍是重写后的。

父类转子类存在风险,父类转子类的前提是:此父类对象为子类对象的引用

例如:

Father father = (Father)son;
if(father instanceof Son)
    Son son =(Son)father;

从jvm的方式去理解:无论是子类强转父类/父类强转子类,对象的引用地址都是不变的。继承的定义,子类肯定包含父类的所有特征和属性,所以子类对象转父类引用,不会存在属性或者方法不存在的情况,也就是安全的。而父类转子类就很可能存在属性的确实,如果有转化需求,应该通过自定义转换器实现