更新時間:2020-04-26 14:27:42 來源:動力節點 瀏覽3078次
Java中類的方法分為類方法(用static修飾,也叫靜態方法)和實例方法(沒有用static修飾,也叫非靜態方法),這兩種方法之間有什么區別呢?
一.實例方法
當類的字節碼文件加載到內存中時,類的實例方法并沒有被分配入口地址,只有當該類的對象創建以后,實例方法才分配了入口地址。從而實例方法可以被類創建的所有對象調用,還有一點需要注意,當我們創建第一個類的對象時,實例方法的入口地址會完成分配,當后續在創建對象時,不會再分配新的入口地址,也可以說,該類的所有對象共享實例方法的入口地址,當該類的所有對象被銷毀,入口地址才會消失。
二.類方法
當類的字節碼文件加載到內存,類方法的入口地址就會分配完成,所以類方法不僅可以被該類的對象調用,也可以直接通過類名完成調用。類方法的入口地址只有程序退出時消失。
因為類方法的入口地址的分配要早于實例方法的入口地址分配時間,所有在定義類方法和實例方法是有以下規則需要遵循:
1.在類方法中不能引用實例變量
實例變量的定義類似實例方法,沒有用static修飾的變量,實例變量的創建與實例方法的創建相同,也是在類的對象創建時完成,所以在類方法中是不能引用實例變量的,因為這個時候實例變量還沒有分配內存地址。
2.在類方法中不能使用super和this關鍵字
這是因為super和this都指向的是父類和本類的對象,而在類方法中調用的時候,這些指代的對象有可能都還沒有創建。
3.類方法中不能調用實例方法
原因同1。
與類方法相比,實例方法的定義就沒有什么限制了:
【1】實例方法可以引用類變量和實例變量
【2】實例方法可以使用super和this關鍵字
【3】實例方法中可以調用類方法
以上就是動力節點java培訓機構的小編針對“Java基礎學習:java類方法定義”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習