在 Java 中,final
关键字用于表示常量。它可以与 变量、方法 和 类 一起使用。
一旦任何实体(变量、方法或类)被声明为 final
,它就只能被赋值一次。也就是说:
- final 变量不能被重新初始化为另一个值
- final 方法不能被重写
- final 类不能被继承
1. Java final 变量
在 Java 中,我们不能更改 final 变量的值。例如:
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 的 final 变量。我们尝试更改 final 变量的值。
当我们运行程序时,我们会收到一个编译错误,消息如下:
cannot assign a value to final variable AGE
AGE = 45;
^
注意:在 Java 中声明 final 变量时,建议使用大写字母。
2. Java final 方法
在学习 final 方法和 final 类之前,请确保您了解 Java 继承。
在 Java 中,final 方法不能被子类重写。例如:
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()
的 final 方法。这里,Main 类继承了 FinalDemo 类。
我们尝试在 Main 类中重写 final 方法。当我们运行程序时,我们会收到一个编译错误,消息如下:
display() in Main cannot override display() in FinalDemo
public final void display() {
^
overridden method is final
3. Java final 类
在 Java 中,final 类不能被另一个类继承。例如:
// create a final class
final class FinalClass {
public void display() {
System.out.println("This is a final method.");
}
}
// try to extend the final class
class Main extends FinalClass {
public void display() {
System.out.println("The final method is overridden.");
}
public static void main(String[] args) {
Main obj = new Main();
obj.display();
}
}
在上面的示例中,我们创建了一个名为 FinalClass 的 final 类。这里,我们尝试让 Main 类继承 final 类。
当我们运行程序时,我们会收到一个编译错误,消息如下:
cannot inherit from final FinalClass
class Main extends FinalClass {
^
另请阅读