java中的final關鍵子與abstract
阿新 • • 發佈:2019-02-12
一.final與abstract
1.final可以修飾屬性,方法,類
abstract不能修飾屬性
2.abstract抽象類只能被繼承,方法不能有方法。如果一個類中的方法要用abstract修飾,那麼該類必須宣告為abstract抽象類。
final修飾屬性和方法不能被子類繼承,final修飾類不能被繼承
二、final
- final關鍵字可以用於成員變數、本地變數、方法以及類。
- final成員變數必須在宣告的時候初始化或者在構造器中初始化,否則就會報編譯錯誤。
- 你不能夠對final變數再次賦值。
- 本地變數必須在宣告時賦值。
- 在匿名類中所有變數都必須是final變數。
- final方法不能被重寫。
- final類不能被繼承。
- final關鍵字不同於finally關鍵字,後者用於異常處理。
- final關鍵字容易與finalize()方法搞混,後者是在Object類中定義的方法,是在垃圾回收之前被JVM呼叫的方法。
- 介面中宣告的所有變數本身是final的。
- final和abstract這兩個關鍵字是反相關的,final類就不可能是abstract的。
- final方法在編譯階段繫結,稱為靜態繫結(static binding)。
- 沒有在宣告時初始化final變數的稱為空白final變數(blank final variable),它們必須在構造器中初始化,或者呼叫this()初始化。不這麼做的話,編譯器會報錯“final變數(變數名)需要進行初始化”。
- 將類、方法、變數宣告為final能夠提高效能,這樣JVM就有機會進行估計,然後優化。
- 按照Java程式碼慣例,final變數就是常量,而且通常常量名要大寫: