Java final意思

在Java程式語言中,final關鍵字具有多種用途,可以用來修飾類、方法或者變數。以下是final在不同情況下的意思:

  1. 修飾類(Class): 當一個類被聲明為final時,它就不能被繼承。這意味著其他程式設計師無法創建該類的子類。final類通常用於那些不應該被繼承的類,例如標準庫中的String類。

    final class FinalClass {
        // ...
    }
  2. 修飾方法(Method): 當一個方法被聲明為final時,它就不能被重寫(overridden)。通常,當子類不需要或不應該重寫父類的方法時,可以使用final修飾方法。

    class Parent {
        final void finalMethod() {
            // ...
        }
    }
  3. 修飾變數(Variable): 當一個變數被聲明為final時,它表示該變數一旦被賦值,其值就不能被改變。final變數可以是在編譯時(compile-time)初始化的,也可以是在運行時(runtime)初始化的。

    • 編譯時初始化的final變數: 必須在聲明時或者在同一個聲明語句中初始化,不能在之後被改變。

      final int num = 10;
      // 或者
      final int num;
      num = 10; // 必須在聲明時或者同一個語句中初始化
    • 運行時初始化的final變數(也稱為final引用): 可以在聲明時或者在構造函式中初始化,但不能在之後被改變。

      final Person person = new Person("Alice");
      // 或者
      final Person person;
      public SomeClass() {
          person = new Person("Bob");
      }

    final變數可以是基本類型,也可以是對象引用。如果是對象引用,final保證的是引用本身不能被改變,但引用所指向的對象的內容可以改變。

    final Person person = new Person("Alice");
    person.setName("Bob"); // 這是允許的,因為對象內容可以改變
    person = new Person("Charlie"); // 這是不允許的,因為引用不能改變

總結一下,final關鍵字用於: