1. 程式人生 > >final和static關鍵字

final和static關鍵字

final

  1. 資料 宣告資料為常量,可以是編譯時常量,也可以是在執行時被初始化後不能被改變的常量。 對於基本型別,final 使數值不變; 對於引用型別,final 使引用不變,也就不能引用其它物件,但是被引用的物件本身是可以修改的。

  2. 方法 宣告方法不能被子類重寫。 private 方法隱式地被指定為 final,如果在子類中定義的方法和基類中的一個 private 方法簽名相同,此時子類的方法不是重寫基類方法,而是在子類中定義了一個新的方法。

  3. 類 宣告類不允許被繼承。

static

  1. 靜態變數
  2. 靜態方法:靜態方法在類載入的時候就存在了,它不依賴於任何例項。所以靜態方法必須有實現,也就是說它不能是抽象方法。只能訪問所屬類的靜態欄位和靜態方法,方法中不能有 this 和 super 關鍵字。
  3. 靜態語句塊:靜態語句塊在類初始化時執行一次。
  4. 靜態內部類:非靜態內部類依賴於外部類的例項,而靜態內部類不需要。靜態內部類不能訪問外部類的非靜態的變數和方法。

初始化順序:

靜態變數和靜態語句塊優先於例項變數和普通語句塊,靜態變數和靜態語句塊的初始化順序取決於它們在程式碼中的順序。

存在繼承的情況下,初始化順序為: 父類(靜態變數、靜態語句塊) 子類(靜態變數、靜態語句塊) 父類(例項變數、普通語句塊) 父類(建構函式) 子類(例項變數、普通語句塊) 子類(建構函式)