【发布时间】:2015-01-23 07:18:11
【问题描述】:
我们有以下代码:
我们有这个指令:
mySub = (SubClass) mySuper;
对我来说,这看起来像是一个合法的强制转换,但它给出了 ClassCastException。为什么会这样?
【问题讨论】:
-
您可以将子类的实例强制转换为其超类,但反之则不行。
-
@RobbyCornelissen 例如 mySuper = (SuperClass) mySub ?
-
只要 Super 引用子类对象,从
Super向下转换到Sub就可以了。在这种情况下 Super 引用一个 Super 对象。如果你必须向下转换,请进行类型检查 -
@Michiel 确实如此。
-
@LewsTherin 我的评论是关于底层实例的,你的评论是关于引用类型的。
标签: inheritance casting