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