final是Java中的一個關鍵字,主要表示“最終态,最終的,不可修改”的意思;它可以修飾Java中的類,方法,屬性等。
一、 final類:
當final修飾Java中的類的時候,表示該類不能被繼承,即表示該類不能有子類,在JDK當中,用final修飾的類常見的有:String、Math、Long...等等;
二、final方法:
當final修飾Java類中的方法的時候,表示該方法不能被重寫,不能被覆寫,但是可以被繼承,但前提是父類的方法的通路控制權限不為private;
三、final屬性:
當final修飾Java類中的屬性的時候,表示該屬性隻能被一次性複制,不能被修改,但一定要記住的是,被final修飾的屬性,無論是類屬性,對象屬性,還是局部變量,一定是要進行初始化的;如果不進行初始化,則該變量使用的是系統預設其初始化的一個值,這與final本身我們給他賦的最終值相違背,是以在Java中規定,final修飾的類屬性和變量屬性必須要進行初始化指派,如果在聲明的時候沒有給變量指派,那麼一定要在構造方法當中給final指派;final和static通常放在一起使用表示常量;
四、final參數:
當final修飾Java方法中的參數的時候,表示該參數隻能從外界傳入,并且不能修改,傳進來是什麼值,在方法體内部就是什麼值,不能被修改;
package test.keyword._final;
/**
* 該類被final修飾,是以該類被子類繼承,不能有子類
* @author Victor Xu
*
*/
public final class FinalClass {
// 該屬性被final修飾,并對其進行初始化,但不能對其進行修改
public final String param1 = "不可變屬性";
// 該屬性被final修飾,但沒有對其初始化,我們将它初始化在了構造函數當中,但不能對其進行修改
public final int param2;
public String param3;
public FinalClass(int param2) {
this.param2 = param2;
System.out.println("該類不能有子類");
}
// 該方法被final修飾,是以該方法不能被子類重寫,覆寫,但是可以被子類繼承
public final void methodA() {
// param1 = "參數修改"; // 錯誤的
// param2 = 0; // 錯誤的
System.out.println("該方法不能被子類重寫");
}
// 該方法當中的參數被final修飾,是以在方法體當中,不能對參數數值進行修改
public void methodB(final String param3) {
this.param3 = param3;
// param3 = "參數修改"; // 錯誤的
}
}