jvm JAVA 類加載機制

  從本篇博文開始,我們就進入虛擬機類加載機制的學習了。那麼什麼是類加載呢?當我們寫完一個Java類的時候,並不是直接就可以運行的,它還要編譯成.class(字節碼)文件,再由虛擬機解釋給當前的操作系統去執行。這些過程都是我們看不見的,我們能看見的也就是一個.class文件。既然虛擬機要解釋這些.class文件給當前的操作系統聽,那麼他怎麼獲得這些.class文件呢?虛擬機獲得這些.class文件的過程就是類加載了。

  所以,總結來說就是:虛擬機將.class文件從磁盤或者其他地方加載到內存,並同時對文件中的數據進行校驗、轉換解析和初始化,最終形成可以被虛擬機直接識別的類型,這就是類加載機制!

首先我們來看看類的一個生命週期:

類聲明週期

  總共有加載、驗證、準備、解析、初始化、使用和卸載七個階段。其中前面的5個階段就是我們要說的類加載機制了,驗證、準備、解析階段又統稱爲連接階段。注意:解析階段不一定會在準備階段之後就執行,也有可能會在初始化階段之後,這是爲了支持JAVA的動態綁定的特性。

  什麼是動態綁定呢?相信大家都知道JAVA的4大特性吧:封裝、繼承、抽象、多態。其實多態就可以理解爲動態綁定。多態的實現機制就是:父類或者接口可以創建他們的子類或者實現類的實例對象。簡單的來說就是:父類可以new出子類,接口可以new出他的實現類。

  多態通俗來說就是:父類A有一個方法function(),子類B,C分別繼承A並且重寫function(),當創建一個對象A b = new B(); b.function()就調用B的funciotn,假如你new C(),那調用的就是C重寫的function。虛擬機怎麼判斷你使用的是哪個類的function就是動態綁定,這個現象就是多態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章