Skip to main content

Java 觀念 - final 關鍵字

📓 此篇不是很完整,隨時會有很大的變動

final 在 Java 是一個關鍵字,出現在不同的 Code 上有不同的用途。

出現在 class 上

代表此 class 不能被他類繼承。

刻意繼承會出現 Compile error。

出現在方法上

代表此方法不可以被重寫(Override)

刻意重寫會出現 Compile error。

出現在變數上

代表此變數不可以被重新賦值。刻意重新賦值會出現 Compile error。

但是如果該變數被指到一個物件上,物件的實際內容(狀態)仍然可以被改變,因為 fianl 在變數上只是定義是否可以重新賦值。

其他

  • fianl 不可以跟 abstract 關鍵字混用,因為他們的觀念互相衝突
  • 使用 Reflection API 仍然有可能對已經設定成 fianl 的變數造成改變(參考