java的前期綁定和後期綁定

原文地址:http://blog.sina.com.cn/s/blog_600046120100wdza.html

程序綁定的概念:
綁定指的是一個方法的調用與方法所在的類(方法主體)關聯起來。對java來說,綁定分爲靜態綁定和動態綁定;或者叫做前期綁定和後期綁定
 
靜態綁定:
在程序執行前方法已經被綁定,此時由編譯器或其它連接程序實現。例如:C。
針對java簡單的可以理解爲程序編譯期的綁定;這裏特別說明一點,java當中的方法只有final,static,private和構造方法是前期綁定
 
動態綁定:
後期綁定:在運行時根據具體對象的類型進行綁定。
若一種語言實現了後期綁定,同時必須提供一些機制,可在運行期間判斷對象的類型,並分別調用適當的方法。也就是說,編譯器此時依然不知道對象的類型,但方法調用機制能自己去調查,找到正確的方法主體。不同的語言對後期綁定的實現方法是有所區別的。但我們至少可以這樣認爲:它們都要在對象中安插某些特殊類型的信息。

動態綁定的過程:
虛擬機提取對象的實際類型的方法表;
虛擬機搜索方法簽名;
調用方法。
 
關於綁定相關的總結:
在瞭解了三者的概念之後,很明顯我們發現java屬於後期綁定。在java中,幾乎所有的方法都是後期綁定的,在運行時動態綁定方法屬於子類還是基類。但是也有特殊,針對static方法和final方法由於不能被繼承,因此在編譯時就可以確定他們的值,他們是屬於前期綁定的。特別說明的一點是,private聲明的方法和成員變量不能被子類繼承,所有的private方法都被隱式的指定爲final的(由此我們也可以知道:將方法聲明爲final類型的一是爲了防止方法被覆蓋,二是爲了有效的關閉java中的動態綁定)。java中的後期綁定是有JVM來實現的,我們不用去顯式的聲明它,而C++則不同,必須明確的聲明某個方法具備後期綁定。


發佈了116 篇原創文章 · 獲贊 15 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章