在本教程中,我們將通過(guò)示例學(xué)習(xí)Java final變量,final方法和final類。
在Java中,final關(guān)鍵字用于表示常量。它可以與變量,方法和類一起使用。
任何實(shí)體(變量,方法或類)一旦被聲明final后,只能分配一次。也就是,
final變量不能用另一個(gè)值重新初始化
final方法不能被重寫
final類不能被繼承
在Java中,我們無(wú)法更改final變量的值。例如,
class Main {
public static void main(String[] args) {
//創(chuàng)建一個(gè)final變量
final int AGE = 32;
//嘗試更改final變量
AGE = 45;
System.out.println("Age: " + AGE);
}
}在上述程序中,我們創(chuàng)建了一個(gè)名為age的final變量。并且我們嘗試更改final變量的值。
運(yùn)行程序時(shí),將出現(xiàn)以下錯(cuò)誤消息,提示編譯錯(cuò)誤。
cannot assign a value to final variable AGE AGE = 45; ^
注意:建議使用大寫形式在Java中聲明final變量。
在了解final方法和final類之前,請(qǐng)確保您了解Java繼承。
在Java中,該final方法不能被子類覆蓋。例如,
class FinalDemo {
//創(chuàng)建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();
}
}在上面的示例中,我們創(chuàng)建了一個(gè)在FinalDemo類內(nèi)部命名display()的final方法。在這里,Main類繼承了FinalDemo類。
我們?cè)噲D覆蓋Main該類中的final方法。運(yùn)行程序時(shí),將出現(xiàn)以下錯(cuò)誤消息,提示編譯錯(cuò)誤。
display() in Main cannot override display() in FinalDemo
public final void display() {
^
overridden method is final在Java中,final類不能被另一個(gè)類繼承。例如,
final class FinalClass {
//創(chuàng)建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();
}
}在上面的示例中,我們創(chuàng)建了一個(gè)名為FinalClass的final類。在這里,我們?cè)噲D通過(guò)Main類繼承final類。
運(yùn)行程序時(shí),將出現(xiàn)以下錯(cuò)誤消息,提示編譯錯(cuò)誤。
cannot inherit from final FinalClass
class Main extends FinalClass {
^