好希望今天就是鐵人賽的final
final可以用來修飾類、方法、變數。
在class 前面加入final 後:此class 無法被繼承。例如:String 、StringBuffer 、StringBuilder。
public final class A {}
💡 //不可以這樣寫,因為A已經使用final修飾,不可被繼承
// public class B extends A {}
在method 前面加入final 後:此方法不能被重寫(override) 。
例如:Object.getClass() ,在Java SE API中Object.getClass()是被這樣子寫的public final native Class<?> getClass(); ,當中native 代表的是去使用底層的C、C++語法,並且使用此方法時在記憶體中是會放在Native Method Stack ,與一般方法放在Stack 不一樣。
public class A {
public void method(){}
}
public class B extends A {
💡 //不可以這樣寫,因為A中的method已經使用final修飾,不可被重寫
//public void method(){}
}
在變數前面加上final ,代表這個變數相當於是常量 ,不可以被更改,一般會建議全部使用大寫命名,並且若由兩個單詞以上組成時,會加上_ ,例如:MIN_BALANCE。
類的屬性:
屬性 使用final 時,可以在幾個地方賦值
實例初始化區塊 中賦值。final :
使用該變數前 進行賦值,不然會報錯。參數 前加上final ,代表在使用該方法時,就會為這個參數加上final ,所以在方法中是不能去修改這個參數的值。靜態屬性 前面加上final 代表這個靜態屬性 等於全局常量 ,整個class 中只會有這一個。在 method 定義成 final 的那段程式碼中:
public class A {
public void method(){}
}
public class B extends A {
//不可以這樣寫,因 為 A 中的method已經使用 final 修飾,不可被重寫
//public void method(){}
}
類別 A 的程式碼是不是漏了 final ?
public class A {
public final void method(){} <== 這段
}