
Java final 关键字
在本教程中,我们将通过示例学习Java final变量,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变量的值。
运行程序时,将出现以下错误消息,提示编译错误。
cannot assign a value to final variable 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方法。运行程序时,将出现以下错误消息,提示编译错误。
display() in Main cannot override display() in FinalDemo
public final void display() {
^
overridden method is final
3. Java final类
在Java中,final类不能被另一个类继承。例如,
final class FinalClass {
//创建final方法
public void display() {
System.out.println("这是final方法。");
}
}
class Main extends FinalClass {
//尝试重写final方法
public void display() {
System.out.println("重写final方法");
}
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 {
^
🎁 福利时间
如果你正在备战面试或者想要学习其他知识,给大家推荐一个宝藏知识库,作者整理了一些列 Java 程序员需要掌握的核心知识,有需要的自取不谢。
知识库地址:https://farerboy.com/
