Java多態性小結

Java引用變量有兩個類型,編譯時的類型和運行時的類型,編譯類型由聲明該變量時引用的類型決定,運行 類型由實際賦給該變量的對象決定。如果編譯類型和運行類型不一致,則出現——多態。 例子如下:

這裏寫圖片描述

上面程序的main方法中顯示創建了3個引用變量,對於前兩個引用變量bc和sc,它們編譯時類型和運行類型 完全相同,因此調用它們的屬性和方法正常,沒有問題。但第三個引用變量ploymophicBc則特殊,它的編 譯類型是BaseClass,而運行時類型是SubClass,當調用該變量的test方法,實際執行的SubClass類中覆蓋 後的test方法,這就是多態。

因爲子類其實是一種特殊的父類,因此Java允許把一個子類對象直接賦給一個父類引用變量,無須任何類型 轉換,或者被稱爲向上轉型,由系統自動完成。

當把一個子類對象直接賦給父類引用變量,例如上面的BaseClass ploymophicBc=new SubClass();,這個 ploymophicBc引用變量的編譯時類型是BaseClass,而運行時類型是SubClass,當運行時調用該引用變量 的方法時,其方法行爲總是像子類方法的行爲,而不是像父類方法行爲,這將出現相同類型的變量、執行同 一個方法時呈現出不同的行爲特徵,這就是多態。

轉自李剛《瘋狂Java講義》第五章。

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