首頁 > Java > java教程 > Java的`final`關鍵字如何影響物件修改?

Java的`final`關鍵字如何影響物件修改?

DDD
發布: 2024-12-15 18:04:14
原創
431 人瀏覽過

How Does Java's `final` Keyword Affect Object Modification?

Java 中的「final」關鍵字如何運作(修改物件)

在Java 中,「final」關鍵字用於聲明具有不可變值的變數。但是,您可能會遇到仍可以修改指派給最終變數的物件的情況。此行為需要對 Final 的功能有更深入的了解。

變數最終性

實例變數:

  • Final 實例變數可以在建構子中。
  • 一旦初始化,它們就無法重新指派給不同的物件參考。
  • 但是,物件的內容(例如,如果它是集合)仍然可以修改。

靜態變數:

  • 最終靜態變數必須在類別宣告中初始化
  • 它們不能在建構子或方法中初始化。

範例

考慮以下程式碼:

import java.util.ArrayList;
import java.util.List;

class Test {
  private final List foo;

  public Test() {
      foo = new ArrayList();
      foo.add("foo"); // Modification-1
  }

  public static void main(String[] args) {
      Test t = new Test();
      t.foo.add("bar"); // Modification-2
      System.out.println("print - " + t.foo);
  }
}
登入後複製
  • 修改-1: 最終實例變數foo 被初始化為新的建構子中的ArrayList 物件。
  • Modification-2: add() 方法用來修改 foo 清單的內容,這是允許的。

Java 1.8 中的有效 Final

Java 1.8 引入了「有效最終」變數的概念。這些是局部變量,在嵌套類別或匿名內部類別中實際上是不可變的。雖然它們不使用“final”關鍵字,但無法重新分配。

子類化與覆蓋

  • 最終類別:無法子類化。
  • 最終方法: 不能被覆蓋(在子類別中)。
  • 超類別中的最終方法:可以在子類別中重寫。

以上是Java的`final`關鍵字如何影響物件修改?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板