java多態(tài)的理解 什么是多態(tài)?java中如何實現(xiàn)多態(tài)?
什么是多態(tài)?java中如何實現(xiàn)多態(tài)?多態(tài)分為編譯時多態(tài)和運行時多態(tài)。1.編譯時多態(tài),其實就是方法重載,相同函數(shù)名,但簽名不相同。值得注意的是簽名不包括方法返回值,換句話說,兩個方法,函數(shù)名和入?yún)⒍枷嗤?/p>
什么是多態(tài)?java中如何實現(xiàn)多態(tài)?
多態(tài)分為編譯時多態(tài)和運行時多態(tài)。
1.編譯時多態(tài),其實就是方法重載,相同函數(shù)名,但簽名不相同。值得注意的是簽名不包括方法返回值,換句話說,兩個方法,函數(shù)名和入?yún)⒍枷嗤?,但返回值不同,編譯器回報錯的。
2.運行時多態(tài),其實就和繼承和接口實現(xiàn)相關(guān)了,子類可以覆蓋父類的非final,非static,非private方法或者實現(xiàn)接口方法。運行時,動態(tài)綁定實例到父類或接口的引用,那jvm是怎么知道調(diào)用哪個子類的實例的對應(yīng)方法的呢?這就是你問的問題了——Java中對象在jvm內(nèi)部都有描述元數(shù)據(jù),對象頭,對象頭中存儲了當(dāng)前實例的類型信息,調(diào)用時jvm就根據(jù)這個type能精確找到具體是點用哪個子類的方法了。