Java中綁定有兩種形式靜態(tài)綁定static-binding(早綁定early-binding)和動(dòng)態(tài)綁定dynamic-binding(晚綁定late-binding,或運(yùn)行時(shí)綁定runtime-binding)
靜態(tài)綁定是在編譯時(shí)綁定,而動(dòng)態(tài)綁定是在運(yùn)行時(shí)根據(jù)對(duì)象的實(shí)際情況來(lái)選擇綁定父類(lèi)或者是某個(gè)子類(lèi)的方法。在執(zhí)行效率上,靜態(tài)綁定要優(yōu)于動(dòng)態(tài)綁定,但喪失了靈活性。
Java中變量是動(dòng)態(tài)綁定的,實(shí)例方法是動(dòng)態(tài)綁定的。在進(jìn)行“向上轉(zhuǎn)型”的時(shí)候子類(lèi)會(huì)覆蓋父類(lèi)的實(shí)例方法而不會(huì)覆蓋父類(lèi)的變量。