天天看點

Java重載和重寫的差別?

在java中重載是由靜态類型确定,在類加載的時候即可确定,屬于靜态分派。

而重寫是有動态類型确定,是在運作時确定的,屬于動态分派,動态分派是由虛方法表實作的,虛方法表中存在着各個方法得到實際入口位址,如果父類中的某個方法 在子類沒有重寫,則父類與子類的方法表中的方法位址相同,如果重寫了,則子類的方法表的位址指向重寫後的位址。

一般重寫針對于子類繼承父類,重寫父類的方法,通過動态綁定實作的,而重載是同一個方法名,但是參數類型或者個數不同,重載可以了解為是一個類中的多态。

若子類中的方法與父類中的某一方法具有相同的方法名 傳回類型和參數表 則新方法将覆寫原有的方法,如果需要父類的原有方法,可使用super關鍵字,該關鍵字引用了目前類的父類,子類函數的通路修飾權限不能低于父類的。

轉載于:https://my.oschina.net/u/4152780/blog/3066540