Java 中可以將建構函式宣告為 final 嗎?
建構函式用於在建立物件時初始化物件。從語法上看,它類似於方法。區別在於建構函式與其類具有相同的名稱,並且沒有返回型別。
無需顯式呼叫建構函式,它們在例項化時會自動呼叫。
示例
public class Example {
public Example(){
System.out.println("This is the constructor of the class example");
}
public static void main(String args[]) {
Example obj = new Example();
}
}輸出
This is the constructor of the class example
final 方法
每當你將一個方法設為 final 時,你就不能重寫它。即你不能從子類為父類的 final 方法提供實現。
即,將方法設為 final 的目的是防止從外部(子類)修改方法。
示例
在下面的 Java 程式中,我們嘗試重寫一個 final 方法。
class SuperClass{
final public void display() {
System.out.println("This is a method of the superclass");
}
}
public class SubClass extends SuperClass{
final public void display() {
System.out.println("This is a method of the superclass");
}
}編譯時錯誤
編譯時,上述程式會生成以下錯誤。
SubClass.java:10: error: display() in SubClass cannot override display() in SuperClass
final public void display() {
^
overridden method is final
1 error將建構函式宣告為 final
在繼承中,每當你擴充套件一個類時。子類繼承父類所有成員,除了建構函式。
換句話說,建構函式不能在 Java 中被繼承,因此,你不能重寫建構函式。
因此,在建構函式前寫 final 沒有任何意義。因此,Java 不允許在建構函式前使用 final 關鍵字。
如果你嘗試將建構函式設為 final,則會生成一個編譯時錯誤,提示“此處不允許使用修飾符 final”。
示例
在下面的 Java 程式中,Student 類有一個 final 的建構函式。
public class Student {
public final String name;
public final int age;
public final Student(){
this.name = "Raju";
this.age = 20;
}
public void display(){
System.out.println("Name of the Student: "+this.name );
System.out.println("Age of the Student: "+this.age );
}
public static void main(String args[]) {
new Student().display();
}
}編譯時錯誤
編譯時,上述程式會生成以下錯誤。
輸出
Student.java:6: error: modifier final not allowed here
public final Student(){
^
1 error
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP