当前位置: 技术问答>java相关
请问为什么有些向下造型会产生违例,有些却一切正常?请大侠总结一下
来源: 互联网 发布时间:2015-03-20
本文导语: 请问为什么有些向下造型会产生违例,有些却一切正常?请大侠总结一下 | class A {} class B extends A {} A a = new A(); B b = new B(); A a1 = b;//ok B b1 = (B)a1; // ok,因为a1的类型实际上是B...
请问为什么有些向下造型会产生违例,有些却一切正常?请大侠总结一下
|
class A {}
class B extends A {}
A a = new A();
B b = new B();
A a1 = b;//ok
B b1 = (B)a1; // ok,因为a1的类型实际上是B
B b2 = a; // ClassCastException,a的类型是A
所谓类型就是instanceof。
class B extends A {}
A a = new A();
B b = new B();
A a1 = b;//ok
B b1 = (B)a1; // ok,因为a1的类型实际上是B
B b2 = a; // ClassCastException,a的类型是A
所谓类型就是instanceof。
|
down cast 编译通过的前提是, ClassA a = (ClassA) b, b 必须被定义为ClassA 的祖先类,
运行正常的条件是: 当执行到这条语句时b 必须真正是ClassA类的一个对象
运行正常的条件是: 当执行到这条语句时b 必须真正是ClassA类的一个对象