java中的向上轉型和向下轉型

1.向上轉型:子類對象轉爲父類對象,在實現多態時,將定義的父類對象的引用指向不同的子類對象,使得在調用父類方法的時候可根據不同子類對象的類型的不同而調用不同子類中的方法,但是由於轉爲父類之後,該對象則不能調用子類中新增加的方法。

該轉換過程是隱式轉換且是安全的,因爲父類不會具有大於子類的接口。

2.向下轉型:在進行向上轉型之後,若想讓子類對象能夠繼續調用自身新加的方法,則需要強制類型轉換將原來轉爲父類的對象再轉爲子類對象。

 

class A{
    public void f(){}
}
class B extends A{
    public void f(){}
    public void g(){}
}
public class C{
    public static void main(String args[]){
      A[] a=new {new A(),new B()};
      a[0].f();
      a[1].f();
      a[1].g();//出現編譯錯誤,B對象已經轉爲了A對象
      ((B)a[1]).g();//重新轉爲子類對象
      ((B)a[0]).g();//出現異常,a[0]不一定是子類對象
  }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章