java是什么 如何理解java是一門靜態(tài)多分派且動(dòng)態(tài)單分派的語(yǔ)言?
如何理解java是一門靜態(tài)多分派且動(dòng)態(tài)單分派的語(yǔ)言?靜態(tài)是指編譯過(guò)程中的標(biāo)識(shí),如類:類a{int getValue(int type)float getValue(float)編譯后,生成的字節(jié)碼根據(jù)
如何理解java是一門靜態(tài)多分派且動(dòng)態(tài)單分派的語(yǔ)言?
靜態(tài)是指編譯過(guò)程中的標(biāo)識(shí),如類:
類a
{
int getValue(int type)
float getValue(float)編譯后,生成的字節(jié)碼根據(jù)返回值、參數(shù)類型分為兩個(gè)方法區(qū)(字節(jié)碼描述方法名、返回值、參數(shù)字段等),數(shù)量和其他方法數(shù)據(jù)。這樣,在運(yùn)行和調(diào)用時(shí)可以根據(jù)返回值、名稱、參數(shù)等條件來(lái)識(shí)別方法。
Dynamic single dispatch不區(qū)分在編譯階段執(zhí)行哪個(gè)方法,而是使用invokedynamic指令的唯一標(biāo)準(zhǔn)在運(yùn)行時(shí)根據(jù)引用的實(shí)際類型來(lái)標(biāo)識(shí)它。
以上,希望對(duì)您有所幫助!