首頁技術文章正文

Java中final關鍵字如何使用?

更新時間:2020-11-17 來源:黑馬程序員 瀏覽量:

1577370495235_學IT就到黑馬程序員.gif

final變量只能賦值一次,賦值的方式有三種:

1)聲明變量時直接賦值;

2)非靜態(tài)成員變量在{}塊中賦值,靜態(tài)成員變量在static{}塊中賦值;

3)非靜態(tài)成員變量在構造方法中賦值。


final修飾類

final類不能被繼承,因此不會有子類。final類中的方法不論是否有final修改,都是final的。

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

public final class FinalClass { }
//下面的類繼承將會出現(xiàn)編譯錯誤
class Sub extends FinalClass { }


final修飾方法

final方法不能被override。若父類中的方法為final的,則子類不能override該方法,但可以調用該方法(父類的final方法)。

下面的程序試圖重寫final方法,將會引發(fā)編譯錯誤:

public class FinalMethod {
  public final void say () { }
}
class Sub extends FinalMethod {
  //下面方法將會出現(xiàn)編譯錯誤
  public void say () { }
}


final成員變量

final修飾的變量不可被改變,意思是不能被重新賦值。由于final修飾的成員變量不能重新賦值,所以Java語規(guī)定:final修飾的成員變量必須由程序員顯示的指定初始值。

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

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

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

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

當final修飾基本類型變量時,改基本類型變量不能被改變。但對于引用類型變量而言,它保存的僅僅只是引用,final只保證這個引用類型變量所引用的地址不會改變,即一直引用同一個對象,但這個對象完全可以發(fā)生改變。

猜你喜歡

Zookeeper怎么選取主leader?

Dubbo相關面試題附答案

Java中integer和int的區(qū)別|真題案例講解

Java培訓課程

分享到:
在線咨詢 我要報名
和我們在線交談!