繁体   English   中英

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

[英]How to Cast parent class object to child class object?

A级

包 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.C.main(C.java:8) 处强制转换为 com.test.test.B

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

在您的代码中,您没有进行任何转换,而是在进行转换 转换(你正在做的事情(B) )只是改变了你对一个对象的引用类型,它根本不会改变对象 如果对象不支持新的引用类型,则转换将失败(如您所见)。

您无法转换对象,但可以基于另一个对象创建新对象。 例如,可以定义一个B构造函数,它接受一个A实例并使用它的信息作为初始化B实例过程的一部分。

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

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

不可能将父级转换为子级,因为子级是从父级增强的,并且不可能让父级获得子级增强。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM