Java 關鍵字之 final


歡迎學習 Java 基礎文章系列之 final 關鍵字

  • final 代表什么意思?
    • final 通常是指無法被改變或者不能被改變的,什么情況下不想被改變呢?
      • 不想改變可能有兩種原因:設計或者效率。
  • 在Java中 final 關鍵字會在哪幾個地方使用到?
    • 有三種地方使用:數據(成員變量、參數)、方法、類。
      • final 數據(成員變量、參數)
        常量以關鍵 final 表示,必須是基本數據類型。
        對於基本類型使數值恆定不變,而用於對象引用,使引用恆定不變,一旦引用被初始化指向一個對象,就無法改為指向另一個對象,然而對象其自身卻是可以被修改的,Java 並未提供使任何對象恆定不變的途徑(但是可以自己編寫類已取得是對象恆定不變的效果),這一限制同樣適用於數組,它也是對象。
        • 空白 final
          Java 允許生成:“空白 final”,即被聲明為 final 但又未給定初始值的域。
        • final 參數
          Java中允許在參數列表中以聲明的方式將參數指明為 final。無法在方法中更改參數引用所指向的對象。
          你可以讀取參數,但卻無法修改參數,這一特性主要用來向匿名類傳遞數據。
      • final 方法
        final 方法的考慮:出於對設計的考慮:確保在繼承中使方法行為保持不變,並且不會被覆蓋,或者出於效率(遭受勸退了)。
        該方法不會被重寫(覆蓋、覆寫)。
        final 和 private 關鍵字
        類中所有的 private 方法都是隱式地指定為 final 的。由於無法使用 private 聲明的方法,所以也就無法重寫該方法。
        如果試圖重寫一個 private 方法(隱含式的 final),似乎是可行的,並且編譯器也不會提示錯誤。
        “重寫(覆蓋、覆寫)”只有在某方法是父類的接口(非interface)的一部分時才會出現。
        final修飾的方法在特定的訪問權限下可以被繼承。
        這是因為,方法是否被final修飾與方法的訪問權限是兩回事,沒有任何關系,被final修飾的方法和未被final修飾的方法都可以自由的指定訪問權限。
        我們有興趣去談論final關鍵字和訪問權限關鍵字在修飾方法的過程的起到的作用,如下表(聲明:final和訪問權限是兩個獨立的概念,沒有任何比較意義,所有本表僅方便讀者理解,不可作為正統知識)
protect關鍵字 final關鍵字 private關鍵字
是否可以繼承
是否可以重寫
小結 private < final < protect (僅適用於方法)

正如上表所示,private實現了final方法不可重寫的功能,並附加不可繼承功能。(再次聲明:final和訪問權限是兩個獨立的概念,沒有任何比較意義,所有上表僅方便讀者理解,不可作為正統知識)可以對private方法添加final關鍵字,但是這種做法沒有任何意義。

	* final 類

final 類的考慮:對該類的設計永不需要做任何變動,或者出於安全的考慮不希望它有子類。
該類不能被繼承,final 類中所有的方法都是隱式指定為 final 關鍵字的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM