Java_final修飾符

final關(guān)鍵字的使用場景

final關(guān)鍵字可以修飾類、方法和變量;

final修飾變量:

表示該變量一旦獲得初始值之后便不能被改變;final可以修飾成員變量(包括類變量和實例變量)也可以修飾局部變量,形參;(final修飾的變量不能被重新賦值是錯誤的,嚴格的說法是,final修飾的變量不能被改變)

與其他成員變量不同的是,final修飾的成員變量(包括實例屬性和類屬性) 必須由程序員顯示初始化,系統(tǒng)不會對final變量進行隱式初始化; 當如果需要在初始化代碼塊 構(gòu)造器中對final變量進行初始化,則不要在初始化之前就訪問成員變量的值;

final修飾局部變量

系統(tǒng)不會對final修飾的局部變量進行初始化,必須進行顯示的初始化,所以,final修飾的成員變量可以進行一次的賦值,不能進行重復的賦值;

final修飾的形參:

因為在系統(tǒng)調(diào)用該方法時,系統(tǒng)根據(jù)傳入的參數(shù)來完成初始化,所以使用final修飾的形參不能被重新賦值;

final修飾的基本類型與引用類型

當final修飾基本類型變量時,不能被重新賦值,所以基本數(shù)據(jù)類型不能被改變;

但對于引用類型變量來說,保存的僅僅是一個引用,final只能保證這個引用的地址不能被改變,即一直引用同一個對象,但這個對象完全可以改變;

final修飾的方法

final修飾的方法不能被重寫,所以不希望子類重寫父類的某個方法,可以使用final修飾該方法;

如果使用final修飾一個帶有private修飾符的方法,那么依然可以在子類中定義與該方法具有相同方法名 相同返回值 相同形參列表的方法;

final修飾的方法只是不能被重寫,但可以被重載;

final修飾的類不能有子類,為了保證某個類不能被繼承,可以使用final修飾起來;



final關(guān)鍵字的具體使用

繼承關(guān)系的最大弊端就是破壞封裝;子類可以訪問父類的實現(xiàn)細節(jié),而且可以通過方法的覆蓋的形式修改實現(xiàn)細節(jié);

final本身的含義為“最終的,不可變的”;可以修飾類、方法、變量;構(gòu)造器不能使用final修飾;

final修飾的類:表示最終的類,不能再有子類;

final修飾的類需要滿足以下條件

1):某類不是專門為繼承設計的

2):處于安全考慮,類的實現(xiàn)細節(jié)不許變動

3):確信該類不會被拓展

final修飾的方法:稱為最終方法,該方法不能被子類覆蓋;

什么時候使用final修飾方法

1):在父類中提供的統(tǒng)一算法,不準子類通過方法覆蓋來修改,此時使用final修飾;

2):在構(gòu)造器中調(diào)用的方法(初始化方法),此時一般使用final修飾;

(final修飾的方法,子類可以調(diào)用,但不可覆蓋)

final修飾的變量:最終的變量,表示常量;該變量只能賦值一次,不能再賦值;

final是唯一可以修飾局部變量的修飾符;

1):final變量必須顯示的指定初始值,因為系統(tǒng)不會為final字段初始化;

2):final變量一旦賦初始值,就不能重新賦值;

3):常量命名規(guī)范:單詞全部使用大寫字母,如果是多個單詞組成,單詞之間使用下劃線隔開;

final修飾的引用類型變量表示的是該對象的引用地址不能改變,但是里面的內(nèi)容可以改變;


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容