final 與 static 的區別
阿新 • • 發佈:2019-07-02
都可以修飾類、方法、成員變數
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型別的