class A
{
int num=2;
void show()
{
System.out.println("A");
}
}
class B extends A
{
int num=4;
void show()
{
System.out.println("B");
}
}
class C
{
public static void main(String[] args)
{
B b=(B)new A();
System.out.println(b.num);
b.show();
}
}
/*
编译通过,运行出现这个异常提示?
Exception in thread "main" java.lang.ClassCastException
        at C.main(C.java:24)
*/
为什么强制将父类转换成子类对象不可以?各位帮忙解释一下!

解决方案 »

  1.   

    这个当然不可以了!给你个极端例子:
    所有的对象都是Object的子类,如果所有的对象都通过B b=(B)new Object()你说可以吗?
    只有这样
    A b=new B();
    这样生成的b,才可以强制转成子类B
      

  2.   

    各位说的够明白了!
    只有顶了
    推荐看一下think in java 中关于多态的讲解
    说的很透彻
      

  3.   

    我喜欢极端的想法;-------------------------------------------------
    这个当然不可以了!给你个极端例子:
    所有的对象都是Object的子类,如果所有的对象都通过B b=(B)new Object()你说可以吗?
    只有这样
    ...