天天看點

Java中的關鍵字——final

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 = "參數修改"; // 錯誤的
	}
}