1. 程式人生 > >final 與 static 的區別

final 與 static 的區別

都可以修飾類、方法、成員變數

static可以修飾類的程式碼塊,final不可以

static不可以修飾方法內區域性變數,final可以

 

static修飾表示靜態或全域性

static修飾的程式碼塊表示靜態程式碼塊,當JVM載入類時,只會被建立一次

static修飾的變數可以重新賦值

static方法中不能用this和super關鍵字

因為this代表的是呼叫這個函式的物件的引用,而靜態方法是屬於類的,不屬於物件,靜態方法成功載入後,
物件還不一定存在。

this代表對本類物件的引用,指向本類已建立的物件。

super代表對父類物件的引用,指向父類物件。

靜態優先於物件存在,方法被static修飾之後,方法先存在,所需的父類引用物件晚於該方法的出
現,也就是super所指向的物件還沒出現,當然就會報錯。

static方法必須被實現,而不能是抽象的abstract

static方法只能被static方法覆蓋

 

final修飾表示常量、一旦建立不可被修改

final標記的成員變數必須在宣告的同時賦值,或在該類的構造方法中賦值,不可重新賦值

final方法不能被子類重寫

final類不能被繼承,沒有子類,final類中的方法預設是final的

final不能用於修飾構造方法

private型別的方法預設是final型別的

 

每天一道面試題,