更新時間:2020-04-26 14:27:42 來源:動力節(jié)點(diǎn) 瀏覽3031次
Java中類的方法分為類方法(用static修飾,也叫靜態(tài)方法)和實(shí)例方法(沒有用static修飾,也叫非靜態(tài)方法),這兩種方法之間有什么區(qū)別呢?
一.實(shí)例方法
當(dāng)類的字節(jié)碼文件加載到內(nèi)存中時,類的實(shí)例方法并沒有被分配入口地址,只有當(dāng)該類的對象創(chuàng)建以后,實(shí)例方法才分配了入口地址。從而實(shí)例方法可以被類創(chuàng)建的所有對象調(diào)用,還有一點(diǎn)需要注意,當(dāng)我們創(chuàng)建第一個類的對象時,實(shí)例方法的入口地址會完成分配,當(dāng)后續(xù)在創(chuàng)建對象時,不會再分配新的入口地址,也可以說,該類的所有對象共享實(shí)例方法的入口地址,當(dāng)該類的所有對象被銷毀,入口地址才會消失。
二.類方法
當(dāng)類的字節(jié)碼文件加載到內(nèi)存,類方法的入口地址就會分配完成,所以類方法不僅可以被該類的對象調(diào)用,也可以直接通過類名完成調(diào)用。類方法的入口地址只有程序退出時消失。
因?yàn)轭惙椒ǖ娜肟诘刂返姆峙湟缬趯?shí)例方法的入口地址分配時間,所有在定義類方法和實(shí)例方法是有以下規(guī)則需要遵循:
1.在類方法中不能引用實(shí)例變量
實(shí)例變量的定義類似實(shí)例方法,沒有用static修飾的變量,實(shí)例變量的創(chuàng)建與實(shí)例方法的創(chuàng)建相同,也是在類的對象創(chuàng)建時完成,所以在類方法中是不能引用實(shí)例變量的,因?yàn)檫@個時候?qū)嵗兞窟€沒有分配內(nèi)存地址。
2.在類方法中不能使用super和this關(guān)鍵字
這是因?yàn)閟uper和this都指向的是父類和本類的對象,而在類方法中調(diào)用的時候,這些指代的對象有可能都還沒有創(chuàng)建。
3.類方法中不能調(diào)用實(shí)例方法
原因同1。
與類方法相比,實(shí)例方法的定義就沒有什么限制了:
【1】實(shí)例方法可以引用類變量和實(shí)例變量
【2】實(shí)例方法可以使用super和this關(guān)鍵字
【3】實(shí)例方法中可以調(diào)用類方法
以上就是動力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對“Java基礎(chǔ)學(xué)習(xí):java類方法定義”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743