簡述Java中的final關鍵字

final關鍵字可用於修飾類、方法和變量,final修飾的類不能被繼承;final修飾的方法不可被重寫;final修飾的變量不可被改變。java

1. final類程序員

final修飾的類不能被繼承意思是final修飾的類不能夠有子類,java.lang.Math類就是一個final類,它不能夠有子類。安全

定義一個final類的好處是:能夠防止其它類改變該類的方法和實現細節,防止一些不安全因素的產生。spa

下面定義了一個簡單的final類:對象

public final class FinalClass { }繼承

//下面的類繼承將會出現編譯錯誤get

class Sub extends FinalClass { }編譯

2. final方法class

final修飾的方法不可被重寫,若是不但願子類重寫父類的某個方法,則能夠使用final修飾詞方法。Object類裏的getClass()方法就是final修飾的,該方法不可被重寫。變量

下面的程序試圖重寫final方法,將會引起編譯錯誤:

public class FinalMethod {

  public final void say () { }

}

class Sub extends FinalMethod {

  //下面方法將會出現編譯錯誤

  public void say () { }

}

注:final修飾的方法只是不能被重寫,但能夠被重載!

3. final成員變量

final修飾的變量不可被改變,意思是不能被從新賦值。因爲final修飾的成員變量不能從新賦值,因此Java語規定:final修飾的成員變量必須由程序員顯示的指定初始值。

final修飾的類變量和實例變量指定初始值得地方以下:

1)類變量:必須在靜態初始化塊中指定初始值或聲明該類變量時指定初始值,並且只能二選一指定。

2)實例變量:必須在非靜態初始化塊、聲明該實例變量或構造器中指定初始值,並且只能三選一指定。

final修飾基本類型變量和引用類型變量的區別:

當final修飾基本類型變量時,改基本類型變量不能被改變。但對於引用類型變量而言,它保存的僅僅只是引用,final只保證這個引用類型變量所引用的地址不會改變,

即一直引用同一個對象,但這個對象徹底能夠發生改變。

相關文章
相關標籤/搜索