son a=new son();
father  A=a;  此中写法的前提条件是son继承了father,你把子类对象向上转了。

a=(son)A; 此时,你有转会子类型了。
有什么区别?一个是父类引址,一个是子类的
有没有实际意义?通常用在哪里?用在多态。

解决方案 »

  1.   

    如果son extends father
    那么"son a = new son(); father A = a;"是正确的请楼主将问题描述清楚了
    向上转型和向下转型都是有条件的
      

  2.   

    只有son是father的子类时,father A = a;才正确。这叫upcasting.而由于father是父类,所以直接写a = A是错误的。只有写a = (son)A才行。这叫downcasting.java中的downcasting是不安全的。
      

  3.   

    比如说你有一个Father类型的数组a[n],而且Father有若干个子类son1,son2,...,每个子类都有方法play()。数组中的元素属于不同的子类。这样的话,当你执行a[n].play()时就可以得到相应的结果,而你不用指明每个元素到底是什么子类。