類方法,實例方法,以及static說明

類方法:

用static修飾的方法。
由於類方法是屬於整個類的,所以類方法的方法體中不能有與類的對象有關的內容。
即類方法體有如下限制:
    1.類方法中不能引用對象變量;
    2.類方法中不能調用類的對象方法;
    3.在類方法中不能調使用super,this關鍵字;
    ##詳情知道static就懂了 

實例方法

當一個類創建了一個對象後,這個對象就可以調用該類的方法(對象方法)。

  1.實例方法中可以引用對象變量,也可以引用類變量;
  2.實例方法中可以調用類方法;
  3.對象方法中可以使用super,this關鍵字。

區別和注意事項

區別:類方法可以通過類名調用,實例方法不能通過類名調用
    當類的字節碼文件被加載到內存時,類的實例方法不會被分配入口地址
    當該類創建對象後,類中的實例方法才分配入口地址,
    從而實例方法可以被類創建的任何對象調用執行。
    類方法在該類被加載到內存時,就分配了相應的入口地址。
    從而類方法不僅可以被類創建的任何對象調用執行,也可以直接通過類名調用。
    類方法的入口地址直到程序退出時才被取消。

注意:

   當我們創建第一個對象時,類中的實例方法就分配了入口地址,當再創建對象時,不再分配入口地址。
    也就是說,方法的入口地址被所有的對象共享,當所有的對象都不存在時,方法的入口地址才被取消。
    在Java語言中,類中的類方法不可以操作實例變量,也不可以調用實例方法,
    這是因爲在類創建對象之前,實例成員變量還沒有分配內存,而且實例方法也沒有入口地址。

static說明

static方法就是沒有this的方法。在static方法內部不能調用非靜態方法,反過來是可以的。而且可以在沒有創建任何對象的前提下,僅僅通過類本身來調用static方法。這實際上正是static方法的主要用途
1.方便在不創建對象的情況下來進行調用(方法/變量)。被static關鍵字修飾的方法或者變量不需要依賴於對象來進行訪問,只要類被加載了,就可以通過類名去進行訪問(被static修飾的爲靜態方法,也就是說靜態方法,靜態變量不依賴對象訪問,只要類被加載,就可以訪問)
2.沒有對象,沒有this。
3.靜態方法中不能訪問類的非靜態成員變量和非靜態成員方法,因爲非靜態成員方法/變量都是必須依賴具體的對象才能夠被調用。
4.非靜態成員方法中是可以訪問靜態成員方法/變量的
5.static變量也稱作靜態變量,靜態變量和非靜態變量的區別是:靜態變量被所有的對象共享,在內存中只有一個副本,它當且僅當在類初次加載時會被初始化。而非靜態變量是對象所擁有的,在創建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響
4.static代碼塊
  static關鍵字還有一個比較關鍵的作用就是 用來形成靜態代碼塊以優化程序性能。static塊可以置於類中的任何地方,類中可以有多個static塊。在類初次被加載的時候,會按照static塊的順序來執行每個static塊,並且只會執行一次。

static:詳細參考鏈接
https://www.cnblogs.com/Jhaiha0/p/8465322.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章