您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Java从父类到子类的显式转换

Java从父类到子类的显式转换

通过使用强制转换,你实际上是在告诉编译器“相信我。我是专业人士,我知道我在做什么,我知道尽管不能保证,但是我告诉你这个animal变量肯定是会成为一只狗。”

由于动物实际上不是狗(它是动物,你可以做Animal animal = new Dog();,也可能是狗),因此VM在运行时会引发异常,因为你违反了这种信任(你告诉编译器一切都会好的,并且不!)

编译器比盲目地接受所有内容要聪明一些,如果你尝试将对象强制转换为不同的继承层次结构(例如,将Dog投射到String),则编译器会将其扔给你,因为它知道这种方法永远无法工作。

因为你实际上只是在阻止编译器抱怨,所以每次转换时,都必须检查是否在if语句中ClassCastException使用不会引起a (这一点很重要instanceof)。

java 2022/1/1 18:18:46 有479人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶