为什么变译过,在运行时,会类型转换异常的吖

为什么在运行时,会类型转换异常的吖

  1. 代码
    Object obj=new String(''BB'');
    Date date=(Date)obj ;

在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要强制转换。因为子类拥有比父类更多的属性、更强的功能,所以父类转换为子类需要强制
编译器在编译时只会检查类型之间是否存在继承关系,有则通过;而在运行时就会检查它的真实类型,是则通过,否则抛出ClassCastException异常。
在继承中,子类可以自动转型为父类,但是父类强制转换为子类时只有当引用类型真正的身份为子类时才会强制转换成功,否则失败

在动物园(Object),麋鹿关在麋鹿所在的区域(String) 老虎关在老虎所在的区域(Date)。麋鹿不能到老虎的领地,老虎同样不能到麋鹿的领地。如果你要强行放进去的话(强转),老虎饿了就会吃掉麋鹿(error)。