將一個方法調用同一個方法主體連接到一起就稱為
綁定
(Binding)
若在程序運行以前執行綁定(由編譯器和鏈接程序
如果有的話)
就叫作
早期綁定
大家以前或許從未聽說過這個術語
因為它在任何程序化語言裡都是不可能的
C編譯器只有一種方法調用
那就是
早期綁定
上述程序最令人迷惑不解的地方全與早期綁定有關
因為在只有一個Instrument句柄的前提下
編譯器不知道具體該調用哪個方法
解決的方法就是
後期綁定
它意味著綁定在運行期間進行
以對象的類型為基礎
後期綁定也叫作
動態綁定
或
運行期綁定
若一種語言實現了後期綁定
同時必須提供一些機制
可在運行期間判斷對象的類型
並分別調用適當的方法
也就是說
編譯器此時依然不知道對象的類型
但方法調用機制能自己去調查
找到正確的方法主體
不同的語言對後期綁定的實現方法是有所區別的
但我們至少可以這樣認為
它們都要在對象中安插某些特殊類型的信息
Java中綁定的所有方法都采用後期綁定技術
除非一個方法已被聲明成final
這意味著我們通常不必決定是否應進行後期綁定——它是自動發生的
為什麼要把一個方法聲明成final呢?正如上一章指出的那樣
它能防止其他人覆蓋那個方法
但也許更重要的一點是
它可有效地
關閉
動態綁定
或者告訴編譯器不需要進行動態綁定
這樣一來
編譯器就可為final方法調用生成效率更高的代碼
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25586.html