JAVA向上、向下轉型

Animal dog = new Dog();//向上轉型

  1. dog只能調用Animal中定義的成員變量或者方法;
  2. 若Dog中存在重寫Animal中的成員變量或者方法,則dog調用的是Dog中重寫的部分;
  3. dog不能調用Dog中新增加的方法。

Animal a1 = new Animal();

Animal a2 = new Dog();

Dog dog = (Dog)a1;//向下轉型,這種情況是不安全的,編譯不會出錯,但是運行會報異常java.lang.ClassCastException

Dog dog2 = (Dog)a2;//向下轉型,這種情況是安全的

總結:

  1. 向下轉型需要強制轉換,向上轉型不需要
  2. 父類 a = new 子類();可以,但是 子類 z = new 父類();不可以
  3. 向上轉型會丟失子類新增加的方法,但是會使用子類重寫的方法
  4. 向上轉型,減少重複代碼,使代碼更加簡潔
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章