java方法重寫 為什么多態(tài)調(diào)用方法必須在運行時才能確定?
為什么多態(tài)調(diào)用方法必須在運行時才能確定?我考慮過這個問題。我想簡要地談?wù)勎业目捶?。如果有錯誤,請改正。這個問題與多態(tài)性的實現(xiàn)機(jī)制有關(guān)。對于Java,多態(tài)性調(diào)用和普通方法調(diào)用沒有區(qū)別,也沒有額外的開銷,
為什么多態(tài)調(diào)用方法必須在運行時才能確定?
我考慮過這個問題。我想簡要地談?wù)勎业目捶?。如果有錯誤,請改正。
這個問題與多態(tài)性的實現(xiàn)機(jī)制有關(guān)。對于Java,多態(tài)性調(diào)用和普通方法調(diào)用沒有區(qū)別,也沒有額外的開銷,所以不管是在編譯時還是在運行時確定。然而,對于C,C的多態(tài)性機(jī)制是基于虛擬表的。必須在運行時確定。這也是為什么C多態(tài)性正在減少的原因。它需要額外的成本,但這樣做的目的是使投訴C兼容。