如何将父类对象转换为子类对象?

时间:2015-11-09 09:48:00

标签: java

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)

3 个答案:

答案 0 :(得分:3)

  

如何将父类对象转换为子类对象?

在您的代码中,您不是转换任何内容,而是您正在投射。 Casting (您使用(B)进行的操作)只是更改了对象的引用类型,它根本不会更改对象 。如果对象不支持新的引用类型,则转换失败(如您所见)。

您无法转换对象,但您可以根据其他对象创建新对象。例如,可以定义一个接受B实例的A构造函数,并在初始化B实例的过程中使用其中的信息。

答案 1 :(得分:1)

Java 不允许将Parent类转换为Child类。 所以你得到了例外。

由于简单的规则,Child类是Parent类的子类,即它继承自Parent类。 所以你永远不能进行这样的转换。

答案 2 :(得分:-1)

无法将父级转换为子级,因为子级已从父级增强,并且无法使父级获得子级增强功能。