public class Main {
public static void main(String[] args) {
A a = new A();
B b = new B();

a = (A) b;//子类强制转换成父类
b = (B) a;//父类强制转换成子类
}
}
class A {
}class B extends A{
}
去掉 a = (A) b;
就不行了

解决方案 »

  1.   

    a = (A) b;//子类强制转换成父类 注意后面这句话 这时候a指向的实际上是b 前面那个括号可以不用 所以可以写成
    a = b;
    b = (B) a;//父类强制转换成子类 a还原为b 如果你上了上面的步骤的话 这个a指向的是a 加了上面的步骤指定的才是b..
      

  2.   

    class Main ?
    这样可以编译过去?
    另外 去掉 a=(A)b 怎么就不行了
      

  3.   


    a=(A)b;a指向了B的对象!不再是原来的new A();对象了!楼主不要误导人哦!
      

  4.   

    a = (A) b;//子类强制转换成父类  // 这是 a 以非 A 了。
    b = (B) a;//父类强制转换成子类  // B 穿了个马甲出去转了一圈回来又脱掉了