跳到主要内容

Java final 关键字

提示
  1. final变量:在Java中,一旦声明为final的变量被赋值后,其值就不能被改变,即成为常量。
  2. final方法:final方法不能被子类重写,保证了方法的实现不会被更改。
  3. final类:final类不能被其他类继承,确保类的完整性和安全性。

在 Java 中,final 关键字用于表示常量。它可以用于变量、方法和类。

一旦任何实体(变量、方法或类)被声明为 final,它只能被赋值一次。也就是说,

  • final 变量不能用另一个值重新初始化
  • final 方法不能被重写
  • final 类不能被继承

1. Java final 变量

在 Java 中,我们不能改变 final 变量的值。例如,

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

// 创建一个 final 变量
final int AGE = 32;

// 尝试更改 final 变量
AGE = 45;
System.out.println("Age: " + AGE);
}
}

在上述程序中,我们创建了一个名为 age 的 final 变量。我们尝试改变 final 变量的值。

运行程序时,我们将得到以下消息的编译错误。

不能给 final 变量 AGE 赋值
AGE = 45;
^

注意:在 Java 中声明 final 变量时建议使用大写字母。

2. Java final 方法

在了解 final 方法和 final 类之前,请确保你了解 Java 继承

在 Java 中,final 方法不能被子类重写。例如,

class FinalDemo {
// 创建一个 final 方法
public final void display() {
System.out.println("这是一个 final 方法。");
}
}

class Main extends FinalDemo {
// 尝试重写 final 方法
public final void display() {
System.out.println("final 方法被重写。");
}

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

在上述示例中,我们在 FinalDemo 类中创建了一个名为 display() 的 final 方法。这里,Main 类继承了 FinalDemo 类。

我们尝试在 Main 类中重写 final 方法。运行程序时,我们将得到以下消息的编译错误。

Main 中的 display() 不能重写 FinalDemo 中的 display()
public final void display() {
^
被重写的方法是 final

3. Java final 类

在 Java 中,final 类不能被其他类继承。例如,

// 创建一个 final 类
final class FinalClass {
public void display() {
System.out.println("这是一个 final 方法。");
}
}

// 尝试继承 final 类
class Main extends FinalClass {
public void display() {
System.out.println("final 方法被重写。");
}

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

在上述示例中,我们创建了一个名为 FinalClass 的 final 类。这里,我们尝试通过 Main 类继承 final 类。

运行程序时,我们将得到以下消息的编译错误。

不能继承自 finalFinalClass
class Main extends FinalClass {
^