原文: https://www.programiz.com/java-programming/final-keyword
在 Java 中,final
关键字用于表示常量。 它可以与变量,方法和类一起使用。
一旦声明了任何实体(变量,方法或类)final
,就只能分配一次。 那是,
- 最终变量不能用另一个值重新初始化
- 最终方法不能被覆盖
- 最终类不能派生
在 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
的最终变量。 而且我们尝试更改最终变量的值。
运行程序时,将出现以下错误消息,提示编译错误。
cannot assign a value to final variable AGE
AGE = 45;
^
注意:建议在 Java 中使用大写字母来声明最终变量。
在学习最终方法和最终类之前,请确保您了解 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()
的最终方法。 在此,Main
类继承了FinalDemo
类。
我们试图覆盖Main
类中的最终方法。 运行程序时,将出现以下错误消息,提示编译错误。
display() in Main cannot override display() in FinalDemo
public final void display() {
^
overridden method is final
在 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.
cannot inherit from final FinalClass
class Main extends FinalClass {
^