final关键字_Java中的final关键字
我們都知道,Java是面向?qū)ο蟮恼Z(yǔ)言,而面向?qū)ο笥幸环N思想就是繼承。但是有時(shí)候,出于某種原因,我們不希望我們的類(lèi)、方法或者變量被繼承或重寫(xiě),這個(gè)時(shí)候,我們就需要final關(guān)鍵字來(lái)幫助我們達(dá)到這種效果。
final 類(lèi)
當(dāng)使用final關(guān)鍵字來(lái)標(biāo)記一個(gè)類(lèi),則表示該類(lèi)不能被繼承。例如我們經(jīng)常使用的String類(lèi)就被標(biāo)記為final,表明String類(lèi)不能夠繼承。設(shè)想一下,如果我們可以繼承 String 類(lèi),重寫(xiě)它的任何方法,并用特定 String 子類(lèi)的實(shí)例替換所有 String 實(shí)例,那么對(duì) String 對(duì)象進(jìn)行操作的結(jié)果將變得不可預(yù)測(cè)。 而且考慮到到處都在使用 String 類(lèi),因此這種繼承是不可接受的。 這就是為什么 String 類(lèi)被標(biāo)記為 final。
Java中的String類(lèi)
final 方法
被標(biāo)記為final的方法是不能被重寫(xiě)的。當(dāng)我們?cè)O(shè)計(jì)一個(gè)類(lèi)并且認(rèn)為一個(gè)方法不應(yīng)該被重寫(xiě)時(shí),我們可以將這個(gè)方法標(biāo)記為final。有時(shí)候,我們并不想把我們的整個(gè)類(lèi)都標(biāo)記為final,我們只是希望它其中的部分方法不被重寫(xiě)就可以,這個(gè)時(shí)候,我們可以使用final關(guān)鍵字來(lái)修飾該方法。如我們的Thread類(lèi)本身并不是final的,但是getName()方法是final的。
java中Thread類(lèi)的final方法
final 變量
被標(biāo)記為final的變量是不能被重新賦值的。一旦final變量被初始化,就不能被修改。
final類(lèi)型修飾的變量分為以下幾種情況:
- 原始類(lèi)型的final變量,例如int,long,double等,一旦初始化,是不能被修改的,否則編譯器會(huì)報(bào)錯(cuò)。
- 引用類(lèi)型的final變量,例如我們自定義一個(gè)final 類(lèi)型的Person對(duì)象,雖然Person對(duì)象本身不能被修改,但是我們還是可以通過(guò)person.setName("chris");方法來(lái)修改Person中name的屬性值。
- final類(lèi)型的變量要么是常量字段,即聲明的時(shí)候就賦一個(gè)常量值,要么只能被賦值一次,之后不能被修改。如我們通常會(huì)在一個(gè)類(lèi)中聲明一個(gè)final類(lèi)型的成員變量,然后在構(gòu)造方法中將該成員變量初始化一次,有些地方將這種final變量叫做final blank(final 空白)。
- final類(lèi)型的形式參數(shù)。有時(shí)候,我們會(huì)把一個(gè)方法的形參設(shè)置為final的,譬如:
這表明我們不希望該形參在方法內(nèi)被修改。
總結(jié)
在本文中,我們了解了final的一些常用用法,例如final變量可以用來(lái)修飾類(lèi),方法,變量等,這在有些情況下對(duì)我們的代碼設(shè)計(jì)很有幫助。
總結(jié)
以上是生活随笔為你收集整理的final关键字_Java中的final关键字的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jvm内存参数配置_“步步精心”-常用J
- 下一篇: java创建子类对象的步骤_一顿Spri