[TOC]
final
類基本含義爲無法改變,但在數據、方法和類三種情況下的使用不同。
final
數據
final
關鍵字告知編譯器數據恆定。final
的引用在數據類型、對象描述時,功能不同。對基本數據類型,final
使數據恆定不變;但是對對象引用,final
限定的是不能更改描述對象,但對像的值變動是允許的,同樣適用於數組此對象。- 當
static final
域時,只佔據一段不改變的存儲變量。可以認爲對所有對象數值進行鎖止。
注意事項
- 當
final
描述數據時,不能更改數據變量。 - 當
final
描述數組時final int[] a={}
,由於沒有更改對象,也沒有static
,可以更改數組的值,不可以更改數組大小。 - 當
final
描述對象時,不能更改對象。 - 帶有恆定初始值的
final static
基本類型的命名方式爲VAL_THR
。 final static
數據類型不可以通過創建第二個對象而改變,縱使對象爲隨機方法。final
允許空白聲明,在使用前必須初始化並賦值。
final方法
使用原因
- 鎖定方法,防止繼承類修改含義。
- 確保在繼承中使方法行爲保存不變,並且不被覆蓋。
class PersonalLoan{
public final String getName(){
return "personal loan";
}
}
class CheapPersonalLoan extends PersonalLoan{
@Override
public final String getName(){
return "cheap personal loan"; //compilation error: overridden method is final
}
}
final
和private
關鍵字
Java默認情況下,將private
關鍵字都指定爲final
。由於無法取用,也就無法更改。
當試圖覆蓋private
類型時,只不過生成了一個新的方法。
final類
使用目的
當不打算類被繼承,也不允許別人這樣使用,使用final
來修飾類。