三種情況:final數據、方法和類 一、final數據 一個永不改變的編譯時常量。(編譯時常量必須是基本數據類型,必須在這個常量定義時賦值) 一個在運行時被初始化的值,而不希望它被改變。 對於基本類型,final使數值恆定不變;對於對象引用,final使引用恆定不變,然而對象其自身卻是可以被修改的。 ...
三種情況:final數據、方法和類
一、final數據
- 使用場景舉例:
- 一個永不改變的編譯時常量。(編譯時常量必須是基本數據類型,必須在這個常量定義時賦值)
- 一個在運行時被初始化的值,而不希望它被改變。
對於基本類型,final使數值恆定不變;對於對象引用,final使引用恆定不變,然而對象其自身卻是可以被修改的。
定義為static final:static強調只有一份,final則說明是一個常量。
定義為final的常量,並不表示在編譯時就可以知道它的值,它也可能在運行時被初始化。
2.空白final
3.final參數
指定為final的參數,表明在方法中無法更改。
二、final方法
1.使用final方法的原因有兩個:
-
- 把方法鎖定,以防止任何繼承類修改它的含義。
- 效率原因,編譯器將final方法轉為內嵌調用,以提高效率,但是當方法很大時無效。
2.final和private關鍵字
類中所有private方法都隱式地指定為是final的。由於無法取用private方法,所以也就無法去覆蓋它。
@Override註解可以解決該問題。
三、final類
將某個類的整體定義為final時,表明該類不能被繼承。
也就是說,該類的設計不能做任何改動,或者出於安全考慮,定義者不希望該類有子類。
final類會把它所有的方法都隱式指定為是final的,因為無法覆蓋它的方法。