1. 程式人生 > >java 類方法和例項方法

java 類方法和例項方法

類方法

static修飾的方法。

由於類方法是屬於整個類的,所以類方法的方法體中不能有與類的物件有關的內容。
即類方法體有如下限制:
    1.類方法中不能引用物件變數;
    2.類方法中不能呼叫類的物件方法;
    3.在類方法中不能調使用superthis關鍵字;
    4.類方法不能被覆蓋。

例項方法

當一個類建立了一個物件後,這個物件就可以呼叫該類的方法(物件方法)。

  1.例項方法中可以引用物件變數,也可以引用類變數;
  2.例項方法中可以呼叫類方法;
  3.物件方法中可以使用superthis關鍵字。

區別和注意事項

區別:類方法可以通過類名呼叫,例項方法不能通過類名呼叫
    當類的位元組碼檔案被載入到記憶體時,類的例項方法不會被分配入口地址
    當該類建立物件後,類中的例項方法才分配入口地址,
    從而例項方法可以被類建立的任何物件呼叫執行。

    類方法在該類被載入到記憶體時,就分配了相應的入口地址。
    從而類方法不僅可以被類建立的任何物件呼叫執行,也可以直接通過類名呼叫。
    類方法的入口地址直到程式退出時才被取消。

注意:
    當我們建立第一個物件時,類中的例項方法就分配了入口地址,當再建立物件時,不再分配入口地址。
    也就是說,方法的入口地址被所有的物件共享,當所有的物件都不存在時,方法的入口地址才被取消。

    在Java語言中,類中的類方法不可以操作例項變數,也不可以呼叫例項方法,
    這是因為在類建立物件之前,例項成員變數還沒有分配記憶體,而且例項方法也沒有入口地址。

相關面試題

1. 下列說法正確的是(B)
  A. 在類方法中可用this來呼叫本類的類方法
  B. 在類方法中呼叫本類的類方法時可直接呼叫
  C. 在類方法中只能呼叫本類中的類方法
  D. 在類方法中絕對不能呼叫例項方法
  解析:
    A:this與物件相關聯,不能放在類方法中。
    B: 不解釋
    C: 在類方法中可以通過建立例項物件呼叫類的例項方法