天天看點

[Thinking in Java] - No.2 Java中的靜态(前期)綁定和動态(後期)綁定

首先,我們先了解一個概念:什麼叫綁定。簡單地說,就是将一個方法調用同一個方法主體關聯起來,就稱作是綁定。在Java中,有兩種綁定方式,分别稱為靜态綁定和動态綁定。

1.靜态綁定:又稱為前期綁定。在程式執行前由編譯器和連接配接程式實作,調用開銷較小,如C語言隻有前期綁定這種方法調用。Java中static,private,final屬于這類範疇。

static方法:static方法可以被子類繼承,被隐藏,但是不能被子類覆寫。是以說,該方法就和父類綁定了,就是父類中定義的哪個方法。

final方法:和static類似,final方法可以被繼承不能覆寫。

private方法:由于private的方法不能被繼承,是以也就沒有覆寫這一說。private方法也就和原類綁定,不能用于其子類。

2.動态綁定:又稱為後期綁定,也叫作運作時綁定。如果一種語言想實作後期綁定,就必須具備某種機制,以便在運作時能判斷對象的類型,進而調用恰當的方法。也就是說,編譯器一直不知道對象的類型,但是方法調用機制能找到正确的方法體,并加以調用。