当然是会有异常啦
public static void main(String args[]) 
   {
            A a=new A();
            B b=new B();
           
            b=(B)a;
            ~~~~~~~~~~~此处a是类A的一个实例,你不能通过通过强制类型的转换将其转换为类B的实例
            //a.callme();
            b.callme();
   }
如果是这样子,
A a = new B();
B b = (B)a;
就可以了~

解决方案 »

  1.   

    >不能对实例进行强制转换;
    >但是可以对超类的引用进行强制转换。不知所云
    当然可以转换了但是需要注意的是(Parent)Child是可以的,反之,(Child)Parent则会冒一定的风险,
    也就是你所遇到的ClassCastException,也就是说b=(B)a;中,a本身不是B类型或者B的子类型,所以当你强制转换的时候,会得到这么一个运行期错误。
      

  2.   

    A a = new B();
    B b = (B)a;
      

  3.   

    >子类可以转以父类,父类不能转为子类绝对误解class B extends A, class C extends BA a = new C();B b = (B)a;
    C c = (C)a;
    C c2 = (C)b;都可以的子类可以转以父类:这个本身就没有问题,因为这本身就是一个"is a"的关系
    父类不能转为子类:不能转的前提是,要转的对象并不属于要转的目标class,
    也就是说它不是is a child;反之,如果想上面,我举的例子中a的声明类型是A
    而其真实类型是C,所以把它转乘B,C类型都是没有任何问题的