java中多態(tài)理解 多態(tài)在生活中的例子
多態(tài)性分為編譯時多態(tài)性和運行時多態(tài)性。1. 編譯時多態(tài)性,其實是方法重載,函數(shù)名相同,但簽名不一樣。值得注意的是,簽名不包括方法的返回值。換句話說,這兩個方法的函數(shù)名和輸入?yún)?shù)是相同的,但返回值不同。
多態(tài)性分為編譯時多態(tài)性和運行時多態(tài)性。
1. 編譯時多態(tài)性,其實是方法重載,函數(shù)名相同,但簽名不一樣。值得注意的是,簽名不包括方法的返回值。換句話說,這兩個方法的函數(shù)名和輸入?yún)?shù)是相同的,但返回值不同。編譯器返回錯誤。
2. 運行時多態(tài)性實際上與繼承和接口實現(xiàn)有關(guān)。子類可以重寫父類的非最終、非靜態(tài)、非私有方法或?qū)崿F(xiàn)接口方法。JVM如何知道要調(diào)用哪個子類實例的對應(yīng)方法?這就是你問的問題。在Java中,對象在JVM中有描述元數(shù)據(jù)。對象頭存儲當(dāng)前實例的類型信息。在調(diào)用時,JVM可以根據(jù)這個類型準(zhǔn)確地找出要使用的子類方法。