下面这种写法为什么可以, B b = (B)a; 这个不是把父类强转成子类来吗(java)

1个回答

  • 这个其实,你可以这么理解

    比如说宠物类是A,

    狗狗类是B

    你现在有一只狗狗。

    你可以这样说

    宠物类 我的狗狗=new 宠物类

    A a=new A();

    当然也可以这样理解

    宠物类 我的狗狗=new 狗狗类

    A b=new B();

    这是继承的两种转型关系。

    1.子类可以直接转化成父类

    因为子类具有父类属性

    也就是说在任何的情况下

    B b =new B();

    A a=(A)b,是没有问题的。

    2.父类不可以直接转化成子类,特别是子类有特有方法的时候。所以父类直接转代成子类可能会报错,并不是一定会成功的。

    再回来看这题。

    在这里的话,因为没有特别去写,所以是可以的。但是不够严谨。

    一般要跟上instanceof运算符来判断下。

    if(A instanceof B){

    B b=(B)a

    }