如:
  Class A Extends B;这样能有错么:
  A a=(A)new B();我调试了下
编译没有问题
但是运行报错到底是怎么回事情呢?

解决方案 »

  1.   

    假如A中有setP();函数,而父类没有,
    运行当然不能正常了。
    这类转换最好不用,除非先用 instanceof判断一下。例如
    if (b instanceof A){
        A a = (A)b;
    }
      

  2.   

    不能的
    编译时是可以通过
    但是运行时会抛出ClassCastException异常
      

  3.   

    A a=(A)new B();这样显然有问题洒
    B a= new A();
      

  4.   

    类型转化是可以的,但是你要保证强制转换的类是正确的,你的例子中将B 转化成A ,不正确,所以运行出错。(A 转成B 是可以的,因为A is a B)
      

  5.   

    编译时强制转换是可以的,但是运行期会出现不可预期的错误
    个人认为可以简单的理解成A是B,但是不可以说B是A,因为B可能比A多些东西