Java的面向?qū)ο缶幊?/a>">Java的面向?qū)ο缶幊?/a>
778
2025-04-01
從本篇博文開始,我們就進(jìn)入虛擬機(jī)類加載機(jī)制的學(xué)習(xí)了。那么什么是類加載呢?當(dāng)我們寫完一個(gè)Java類的時(shí)候,并不是直接就可以運(yùn)行的,它還要編譯成.class(字節(jié)碼)文件,再由虛擬機(jī)解釋給當(dāng)前的操作系統(tǒng)去執(zhí)行。這些過程都是我們看不見的,我們能看見的也就是一個(gè).class文件。既然虛擬機(jī)要解釋這些.class文件給當(dāng)前的操作系統(tǒng)聽,那么他怎么獲得這些.class文件呢?虛擬機(jī)獲得這些.class文件的過程就是類加載了。
所以,總結(jié)來說就是:虛擬機(jī)將.class文件從磁盤或者其他地方加載到內(nèi)存,并同時(shí)對(duì)文件中的數(shù)據(jù)進(jìn)行校驗(yàn)、轉(zhuǎn)換解析和初始化,最終形成可以被虛擬機(jī)直接識(shí)別的類型,這就是類加載機(jī)制!
首先我們來看看類的一個(gè)生命周期:
總共有加載、驗(yàn)證、準(zhǔn)備、解析、初始化、使用和卸載七個(gè)階段。其中前面的5個(gè)階段就是我們要說的類加載機(jī)制了,驗(yàn)證、準(zhǔn)備、解析階段又統(tǒng)稱為連接階段。注意:解析階段不一定會(huì)在準(zhǔn)備階段之后就執(zhí)行,也有可能會(huì)在初始化階段之后,這是為了支持Java的動(dòng)態(tài)綁定的特性。
什么是動(dòng)態(tài)綁定呢?相信大家都知道JAVA的4大特性吧:封裝、繼承、抽象、多態(tài)。其實(shí)多態(tài)就可以理解為動(dòng)態(tài)綁定。多態(tài)的實(shí)現(xiàn)機(jī)制就是:父類或者接口可以創(chuàng)建他們的子類或者實(shí)現(xiàn)類的實(shí)例對(duì)象。簡單的來說就是:父類可以new出子類,接口可以new出他的實(shí)現(xiàn)類。
多態(tài)通俗來說就是:父類A有一個(gè)方法function(),子類B,C分別繼承A并且重寫function(),當(dāng)創(chuàng)建一個(gè)對(duì)象A b = new B(); b.function()就調(diào)用B的funciotn,假如你new C(),那調(diào)用的就是C重寫的function。虛擬機(jī)怎么判斷你使用的是哪個(gè)類的function就是動(dòng)態(tài)綁定,這個(gè)現(xiàn)象就是多態(tài)。
今天就先說這么多,大家好好理解一下。要記住那幾個(gè)階段,接下來的博文我們會(huì)逐一的講解每個(gè)階段的流程。
Java 虛擬化
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。