類方法
用static修飾的方法。
由於類方法是屬於整個類的,所以類方法的方法體中不能有與類的對象有關的內容。
即類方法體有如下限制:
1.類方法中不能引用對象變量;
2.類方法中不能調用類的對象方法;
3.在類方法中不能調使用super,this關鍵字;
4.類方法不能被覆蓋。
實例方法
當一個類創建了一個對象后,這個對象就可以調用該類的方法(對象方法)。
1.實例方法中可以引用對象變量,也可以引用類變量;
2.實例方法中可以調用類方法;
3.對象方法中可以使用super,this關鍵字。
區別和注意事項
區別:類方法可以通過類名調用,實例方法不能通過類名調用
當類的字節碼文件被加載到內存時,類的實例方法不會被分配入口地址
當該類創建對象后,類中的實例方法才分配入口地址,
從而實例方法可以被類創建的任何對象調用執行。
類方法在該類被加載到內存時,就分配了相應的入口地址。
從而類方法不僅可以被類創建的任何對象調用執行,也可以直接通過類名調用。
類方法的入口地址直到程序退出時才被取消。
注意:
當我們創建第一個對象時,類中的實例方法就分配了入口地址,當再創建對象時,不再分配入口地址。
也就是說,方法的入口地址被所有的對象共享,當所有的對象都不存在時,方法的入口地址才被取消。
在Java語言中,類中的類方法不可以操作實例變量,也不可以調用實例方法,
這是因為在類創建對象之前,實例成員變量還沒有分配內存,而且實例方法也沒有入口地址