看了很多描述,最後自己總結的一句話就是:
多型就是乙個父類的引用指向子類的物件,在編譯和執行時會表現出不同的行為。
對成員變數來說,編譯和執行都是呼叫父類的成員變數
對成員方法來說,編譯時呼叫父類的成員方法,而執行時呼叫真正物件的方法,而引用指向的是子類的物件,所以呼叫子類的方法
1.成員變數:(不涉及覆蓋)
編譯時: 參考引用變數所屬的類中是否有呼叫的成員變數, 有, 編譯通過,沒有,編譯失敗。
執行時: 參考引用變數所屬的類中是否有呼叫的成員變數, 並執行該類所屬中的成員變數。
簡單的說:編譯和執行都參考等號的左邊。
2.成員函式(非靜態):
編譯時:參考引用變數所屬的類中是否有呼叫的成員方法, 有, 編譯通過, 沒有,編譯失敗:
執行時:參考的是物件所屬的類中是否有呼叫的函式。
簡單的說:編譯看左邊, 執行看右邊。
3.靜態函式, 變數:
編譯和執行都是參考左邊引數型別!
其實靜態方法不存在多型, 靜態方法是屬於類的,我們說的是物件的多型!靜態方法直接用類名呼叫就好了,
沒必要建立物件!
靜態的方法只能被靜態的方法所覆蓋!
多型的理解
1.對多型的理解 同乙個物件在不同時刻體現出來的不同狀態。簡單來說就是貓和狗都是動物,但他們又有許多不同,貓和狗是動物向下延伸的不同結果,這就是多型。2.多型的前提 a 有繼承或者實現關係。b 有方法重寫。c 有父類或者父介面引用指向子類物件。3.多型的分類 a 具體類多型 class fu cla...
多型的理解
1 同乙個物件在不同時刻體現出來的不同狀態。2 多型的前提 a 有繼承或者實現關係。b 有方法重寫。c 有父類或者父介面引用指向子類物件。多型的分類 a 具體類多型 class fu class zi extends fu fu f new zi b 抽象類多型 abstract class fu ...
多型的理解
多型 事物執行過程中存在不同的狀態 多型存在的條件 必須具有繼承關係,子類要重寫父類的方法,父類引用子類的物件 例如乙個父類animal 子類 cat 通過輸出結果可以很充分的體現了多型的三個前提 1.必須有繼承關係 cat繼承animal 2.必須重寫父類方法 子類cat重寫了父類的eat,rn,...