父类不可以向子类强制类型转换,这个好像没什么好说的吧,但是如果父类对象的运行时类型(run-time type)是子类类型,该转换是允许的。
例如:
A a = new B();//B是A的子类,a的编译时类型(compile-time type)为A,运行时类型为B
B b = (B)a;
你上面的例子属于运行时类型为父类的对象向子类转换,是不可以的。那个构造函数必须有么?我没仔细看,是不是你在什么地方用到new B(1,2)之类的了?

解决方案 »

  1.   

    不能这样转,如果父类对像在new出来的时候是父类对像好他永远只能是父类对像,如果是这样用的就可以转
    A temp = new B();
    那就可以用 B dddb = (B)temp;
    ClassCastException这个错就是指强制转换时类型不匹配
      

  2.   

    上面说的是对的。
    你想访问B类的方法只能new 一个B类的对象出来。
    A a = new B();
    a.method2() 访问的就是B类的方法,不需要类型转化。
      

  3.   

    好像有个 上溯造型 的概念
    不知何这个有没有关系,记不清了,应该是在 JAVA编程思想 里看到的
      

  4.   

    上溯造型 :upcast向上转型。楼主的设计有问题,B和A之间是is a关系吗?不是的话就不要用继承。