将SuperClass的对象转换为子类

Kri*_*hna 3 java classcastexception

我有这样的代码.

超级

public class Actual {
    public int x = 123;
}
Run Code Online (Sandbox Code Playgroud)

子类

public class Super extends Actual{
    public int x = 999;
    public int y = 12345;
}


public class Sub extends Super {
    public int x = 144;
}
Run Code Online (Sandbox Code Playgroud)

问题是我可以将超类的对象转换为子类吗?这是对这个问题的权利,我试过了什么?

public class Mid1Prob1 {
    public static void main(String[] args) {
        System.out.println("Testing...");
        int x = 3;
        Actual actual = new Super();
        System.out.println(actual.x);


        Super super1 = new Super();
        System.out.println(super1.x);


        Actual act = new Actual();

        act = new Sub();
        System.out.println(act.x);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它给出了Class Cast异常.

rog*_*one 5

您可以将Child类转换为Super类,但反之亦然.如果车辆是超级级别而且车辆是子级别,则所有车辆(儿童)都是车辆(超级)但不是所有车辆都是车辆.