强类型转换可以发生在:
1)子类转换成父类   只要B b; b instanceof A 为true,那么b就可以强转换成A类型
2)基本数据类型之间

解决方案 »

  1.   

    基本类型的强制转换就不说了。
    引用类型的强制转换有一些先决条件:首先分清对象和引用。对象在存在于内在中的一个实体,而引用是是告诉程序可以在哪里找到这个实体。由于 Java 不允许直接操作内存,所以我们对实体没有直观的印象。然后,搞明白,强制转换是发生在引用上的,不是发生在实体上的。从子类引用转换到父类引用,是不需要强制转换的。比如,你可以说女人是人,但你不能说人是女人,就是这个道理。强制转换发生在父类引用到子类引用的情况下,但先决条件是实体的实际类型,必须是强制转换后的类型的子类型。比如,一个女人,有这么一个实体,我用“人”来表示他。但进厕所的时候,要分男女,所以我说这个人是女人,可以进女厕所。但如果我说他是男人(比如打扮为男人),可她实际是女人,那么我说他是男人这就是错的,在 Java 里叫 ClassCaseException (好像是这个)
      

  2.   

    儿子转到父亲,无条件OK
    父亲转到儿子,编译OK, 运行可能ClassCastException
    不是直系亲属的两个class之间,编译错误
      

  3.   

    那么什么时候父亲转到儿子,编译OK,运行也OK呢?
      

  4.   

    就是我说的那种情况才运行也OK啊。实体是什么,才能转换成什么(以及这个类型的父类型),否则就会 ClassCaseException 了。也就是说一个对象持有父类的引用而实体是子类的,就可以把父类的引用强制转换为子类的引用,是不是这样理解?
    理解正确!