A类
package com.test.test;
public class A {
public void printA(){
System.out.println("A");
}
}
B类
package com.test.test;
public class B extends A {
public void print(){
System.out.println("B");
}
}
C类
package com.test.test;
public class C {
public static void main(String[] args) {
B b = (B) new A();
b.printA();
b.print();
}
}
获得以下异常
线程“main”中的异常java.lang.ClassCastException: com.test.test.A无法转换为com.test.test.B at com.test.test.C.main(C.java:8)
答案 0 :(得分:3)
如何将父类对象转换为子类对象?
在您的代码中,您不是转换任何内容,而是您正在投射。 Casting (您使用(B)
进行的操作)只是更改了对象的引用类型,它根本不会更改对象 。如果对象不支持新的引用类型,则转换失败(如您所见)。
您无法转换对象,但您可以根据其他对象创建新对象。例如,可以定义一个接受B
实例的A
构造函数,并在初始化B
实例的过程中使用其中的信息。
答案 1 :(得分:1)
Java 不允许将Parent类转换为Child类。 所以你得到了例外。
由于简单的规则,Child类是Parent类的子类,即它继承自Parent类。 所以你永远不能进行这样的转换。
答案 2 :(得分:-1)
无法将父级转换为子级,因为子级已从父级增强,并且无法使父级获得子级增强功能。