JAVA final關(guān)鍵字的理解

java中final關(guān)鍵字在平時(shí)開發(fā)中用到的不多也不算少,大多均用在修飾類的變量上,很少用final去對(duì)一個(gè)類進(jìn)行修飾,因?yàn)槟且馕吨擃悓⒉荒鼙焕^承。從設(shè)計(jì)角度出發(fā)我們更偏向于對(duì)類進(jìn)行繼承重用,以體現(xiàn)它的好處等。但final的作用遠(yuǎn)不止于此。

final代表的含義

final在java中代表著"最終"、"不可修改"之意,即一旦初始化(強(qiáng)調(diào)初始化時(shí)必須對(duì)final修飾的變量進(jìn)行初始化值)完成就不可對(duì)其進(jìn)行修改。

final用法1:修飾類

如果一個(gè)類被final進(jìn)行修飾,那么該類將無(wú)法被繼承。Java中的String類就是一個(gè)final修飾的類。此類的成員變量可以被final修飾也可以不使用final修飾。但該類的所有方法皆隱式被final修飾,被final修飾的方法,在不能被繼承的基礎(chǔ)上,自然不能被重寫。實(shí)際開發(fā)中,一旦對(duì)類進(jìn)行final修飾,意味著這個(gè)類將作為終類使用,不會(huì)被繼承。

final修飾的類不可被繼承

final用法2:修飾方法

final修飾方法用于表明該方法不可以被子類繼承進(jìn)行重寫修改。(早期java中,final修飾的方法會(huì)被作為內(nèi)嵌調(diào)用以提升性能,但方法如果過(guò)于龐大將失去意義,在后期java中被砍掉此優(yōu)化作用)
注意:這里修飾的方法指的是可以被子類進(jìn)行繼承的方法。若方法同時(shí)被private進(jìn)行修飾,表明方法是該類私有的方法,不存在被繼承的作用范圍內(nèi),那final作用將失去。

final修飾方法

可以看出,final和private同時(shí)修飾方法,final只是表明該方法不能被子類重寫(前提是在該方法能夠被重寫的基礎(chǔ)上),private修飾方法表明該方法是私有的不可被繼承,那么子類如果存在和父類方法名和參數(shù)、返回值一致的方法,屬于子類自己所有而不是重寫父類,所以即便該方法同時(shí)也被final修飾了(沒有能夠被重寫的基礎(chǔ)),子類亦可正常聲明該方法。

final用法3:修飾變量

開發(fā)過(guò)程中用法最多的地方就屬對(duì)于變量的修飾了,final修飾變量表示該變量是一次賦值,不可以被二次修改,當(dāng)然前提是必須對(duì)final修飾變量進(jìn)行初始化,初始化的方式可以是直接聲明,也可以是在構(gòu)造函數(shù)中進(jìn)行初始化。這里需要加以區(qū)別的是”變量類型“。
基本數(shù)據(jù)類型:對(duì)于final修飾的基本數(shù)據(jù)類型,對(duì)其值不可被修改。
引用類型:變量所指的值即引用的內(nèi)存物理地址,改地址無(wú)法進(jìn)行改變,但不影響對(duì)引用的對(duì)象進(jìn)行操作。

final修飾變量

這里看出final修飾的變量,如果使用構(gòu)造函數(shù)進(jìn)行初始化的話,需要所有構(gòu)造函數(shù)進(jìn)行初始化,但不影響每個(gè)構(gòu)造函數(shù)對(duì)其初始化的值不盡相同。

final修飾引用類型

final修飾引用類型,不可對(duì)其進(jìn)行指向新的引用,但可對(duì)其引用的對(duì)象進(jìn)行值修改。

如果final修飾函數(shù)參數(shù)的話,同樣進(jìn)行理解,表明函數(shù)對(duì)其只讀性。

注意:當(dāng)final變量是基本數(shù)據(jù)類型以及String類型時(shí),如果在編譯期間能知道它的確切值,則編譯器會(huì)把它當(dāng)做編譯期常量使用。也就是說(shuō)在用到該final變量的地方,相當(dāng)于直接訪問(wèn)的這個(gè)常量(這里注意是常量對(duì)比非對(duì)象,有興趣的可以了解下String相關(guān)知識(shí)),不需要在運(yùn)行時(shí)確定。如果編譯期無(wú)法確定該變量的確切值那就沒辦法進(jìn)行常量替換了。看如下:

編譯期final被當(dāng)作常量

以上就是對(duì)final的理解和認(rèn)識(shí),如有不妥請(qǐng)留言斧正。

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

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

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