当一个对象不能直接类型转换。就需要造型。
例如:
一个int型能直接转换为double ,就不需要造型。
一个double型不能直接转换为int,就需要造型。
int a =1 ;
double d1 = a;  //不需要造型
int a2 = (int)d1 //需要造型。注意:
1)boolean不能造型为其他任何类型,其他任何类型也不能造型为boolean型。
2)子类能够直接转换为父类,不需要造型。父类不能够直接转换为子类,需要造型。
3)在强制造型时,不一定造型成功,此时编译对,但执行时出错。

解决方案 »

  1.   

    好像thinking in java中称"子类转换为父类" 为“上溯造型(upcasting)”,是不是这样的?另外,父类造型为子类又是通过那种方法进行的?
      

  2.   

    父类造型为子类,必须显示造型,但不一定会造型成功。例如:super是sub的父类。
    sub a = new sub();
    super b = (super)a; 
      

  3.   

    所谓“造型”,并不是将一个类型的对象“变成”为某个类型,而是“看作”某个类型。比如有父类human,子类man与woman,如果new一个man的话,不需要显式造型,就可以被“看作”是一个human。(比如:human aHuman = new man();)当你拿到一个human对象时,实际上有可能是一个man,也可能是个woman,甚至干脆就是个human。如果你把刚才new的man还“看作”是个man的话(也就是说:man m1 = (man)aHuman;,这就是所谓“下溯造型”),是不会有错的;但如果你要是把他“看作”woman(就像这样:woman w1 = (woman)aHuman;),就会出现异常。
    所以“上溯造型”一定是安全的,而“下溯造型”是不安全的。