【发布时间】:2013-05-03 17:29:57
【问题描述】:
这里有人可以解释一下为什么我在将父级向下转换为子级时得到 java.lang.ClassCastException 吗?
public class Child extends Parent{
public static void main(String[] args){
new Child().go();
}
void go(){
go2(new Parent(), new Child());
go2((Child) new Parent(), new Child());
}
void go2(Parent p1, Child c1){
Child c2 = (Child)p1;
Parent p2 = (Parent)c1;
}
}
class Tree{}
我已阅读参考变量转换并在网络上搜索示例。有人可以向我解释一下吗?我真的很想了解它为什么会抛出异常。谢谢
【问题讨论】:
-
你将不是孩子的父母转换为孩子
-
它没有通过 IS-A 测试:一个孩子 IS-A 父母,但父母不是孩子。