java 類方法和例項方法
阿新 • • 發佈:2019-02-16
類方法
用static修飾的方法。
由於類方法是屬於整個類的,所以類方法的方法體中不能有與類的物件有關的內容。
即類方法體有如下限制:
1.類方法中不能引用物件變數;
2.類方法中不能呼叫類的物件方法;
3.在類方法中不能調使用super,this關鍵字;
4.類方法不能被覆蓋。
例項方法
當一個類建立了一個物件後,這個物件就可以呼叫該類的方法(物件方法)。
1.例項方法中可以引用物件變數,也可以引用類變數;
2.例項方法中可以呼叫類方法;
3.物件方法中可以使用super,this關鍵字。
區別和注意事項
區別:類方法可以通過類名呼叫,例項方法不能通過類名呼叫 當類的位元組碼檔案被載入到記憶體時,類的例項方法不會被分配入口地址 當該類建立物件後,類中的例項方法才分配入口地址, 從而例項方法可以被類建立的任何物件呼叫執行。 類方法在該類被載入到記憶體時,就分配了相應的入口地址。 從而類方法不僅可以被類建立的任何物件呼叫執行,也可以直接通過類名呼叫。 類方法的入口地址直到程式退出時才被取消。 注意: 當我們建立第一個物件時,類中的例項方法就分配了入口地址,當再建立物件時,不再分配入口地址。 也就是說,方法的入口地址被所有的物件共享,當所有的物件都不存在時,方法的入口地址才被取消。 在Java語言中,類中的類方法不可以操作例項變數,也不可以呼叫例項方法, 這是因為在類建立物件之前,例項成員變數還沒有分配記憶體,而且例項方法也沒有入口地址。
相關面試題
1. 下列說法正確的是(B)
A. 在類方法中可用this來呼叫本類的類方法
B. 在類方法中呼叫本類的類方法時可直接呼叫
C. 在類方法中只能呼叫本類中的類方法
D. 在類方法中絕對不能呼叫例項方法
解析:
A:this與物件相關聯,不能放在類方法中。
B: 不解釋
C: 在類方法中可以通過建立例項物件呼叫類的例項方法