多態-轉型

多態的轉型可以分爲向上轉型與向下轉型兩種:

向上轉型:當有子類對象賦值給一個父類引用時,便是向上轉型,多態本身就是向上轉型的過程。

使用格式:

父類類型   變量名  =    new    子類類型();

如:Person   p   =       new   Student();

向下轉型:一個已經向上轉型的子類對象可以使用強制類型轉換的格式,將父類引用轉爲子類引用,這個過程是向下轉型。如果直接創建父類對象,是無法向下轉型的!

使用格式:子類類型   變量名   =  (子類類型)   父類類型的變量;

如:  Student   stu  =(Student)   p;   //變量  p  實際上指向Student 對象 


什麼時候使用向上轉型:

當不需要面對子類類型時,通過提高擴展性,或者使用父類的功能就能完成相應的操作,這時就可以使用向上轉型

如 :Animal   a    =  new  Dog();

a.eat();

什麼時候使用向下轉型

當要使用子類特有功能時,就需要使用向下轉型。

     如:Dog  d =  (Dog)a;//向下轉型

d.lookHome();//調用Dog類的lookHome 方法

向下轉型的好處:可以使用子類特有的功能

弊端是:需要面對具體的子類對象;在向下轉型時容易發生ClassCastException類型轉換異常。在轉換之前必須做類型判斷

if(!(a  instanceof Dog)){//判斷當前對象是否爲Dog類型
System.out.println("類型不匹配,不能轉換");
return;
}

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