# Java `final`关键字

> 原文： [https://www.programiz.com/java-programming/final-keyword](https://www.programiz.com/java-programming/final-keyword)

#### 在本教程中，我们将通过示例学习 Java 最终变量，方法和类。

在 Java 中，`final`关键字用于表示常量。 它可以与变量，方法和类一起使用。

一旦声明了任何实体（变量，方法或类）`final`，就只能分配一次。 那是，

*   最终变量不能用另一个值重新初始化
*   最终方法不能被覆盖
*   最终类不能派生

* * *

## 1\. Java 最终变量

在 Java 中，我们无法更改最终变量的值。 例如，

```java
class Main {
  public static void main(String[] args) {

    // create a final variable
    final int AGE = 32;

    // try to change the final variable
    AGE = 45;
    System.out.println("Age: " + AGE);
  }
} 
```

在上面的程序中，我们创建了一个名为`age`的最终变量。 而且我们尝试更改最终变量的值。

运行程序时，将出现以下错误消息，提示编译错误。

```java
cannot assign a value to final variable AGE
    AGE = 45;
    ^ 
```

**注意**：建议在 Java 中使用大写字母来声明最终变量。

* * *

## 2\. Java `final`方法

在学习最终方法和最终类之前，请确保您了解 [Java 继承](/java-programming/inheritance "Java Inheritance")。

在 Java 中，子类不能覆盖`final`方法。 例如，

```java
class FinalDemo {
    // create a final method
    public final void display() {
      System.out.println("This is a final method.");
    }
}

class Main extends FinalDemo {
  // try to override final method
  public final void display() {
    System.out.println("The final method is overridden.");
  }

  public static void main(String[] args) {
    Main obj = new Main();
    obj.display();
  }
} 
```

在上面的示例中，我们在`FinalDemo`类内创建了一个名为`display()`的最终方法。 在此，`Main`类继承了`FinalDemo`类。

我们试图覆盖`Main`类中的最终方法。 运行程序时，将出现以下错误消息，提示编译错误。

```java
 display() in Main cannot override display() in FinalDemo
  public final void display() {
                    ^
  overridden method is final 
```

* * *

## 3\. Java 最终类

在 Java 中，最终类不能被另一个类继承。 例如，

```java
final class FinalClass {
    // create a final method
    public void display() {
      System.out.println("This is a final method.");
    }
}

class Main extends FinalClass {
  // try to override final method
  public  void display() {
    System.out.println("The final method is overridden.");
  }

  public static void main(String[] args) {
    Main obj = new Main();
    obj.display();
  }
} 
```

在上面的示例中，我们创建了一个名为`FinalClass`的最终类。 在这里，我们试图通过`Main`类继承最终的类。

When we run the program, we will get a compilation error with the following message.

```java
cannot inherit from final FinalClass
class Main extends FinalClass {
                   ^ 
```