【Java】基礎(chǔ)19:final修飾符和權(quán)限修飾符

00封面.png

?前幾天學(xué)過方法重寫,也就是說,一個(gè)類繼承至父類,子類可以將父類的方法重寫。

但有的時(shí)候父類的方法要求固定,不能被更改。

該怎么辦?

這就得學(xué)到一個(gè)新的修飾符了。

一、final修飾符

final,翻譯成中文就是“不可更改的 ”。

顧名思義,它是一個(gè)修飾符,用于修改不可更改的內(nèi)容。

  • 被final修飾的類:不能被繼承。

  • 被final修飾的方法:不能被重寫。

  • 被final修飾的變量:不能被重新賦值。

  • 被final修飾的常量:名稱一般都有書寫規(guī)范,所有字母都大寫。多個(gè)單詞之間,使用下劃線進(jìn)行分割。

1.修飾類和方法

image

①final修飾類,類不能被繼承。

既然不能被繼承,那final類里的方法也無法被重寫。

②final修飾方法,方法不能被重寫。

非final類中,也可以存著final方法。

注:其中final方法是可以被重載的(同名不同參)

2.修飾局部變量

image

③用final修飾基本數(shù)據(jù)類型局部變量。

只能賦值一次,不能再更改了,編譯會(huì)報(bào)錯(cuò)。

基本數(shù)據(jù)類型不能更改的是值。

④用final修飾引用數(shù)據(jù)類型局部變量。

只能創(chuàng)建對(duì)象一次,不能再次創(chuàng)建對(duì)象,編譯會(huì)報(bào)錯(cuò)。

引用數(shù)據(jù)類型不能更改的是對(duì)象的地址。

該對(duì)象的值是可以通過對(duì)應(yīng)的setXXX()方法更改的。

3.修飾成員變量

成員變量和局部變量有一個(gè)區(qū)別在于:

成員變量是有默認(rèn)值的。

所以用final修飾成員變量,它就不再有默認(rèn)值了,必須一步直接賦值 。

初始化方式有兩種,只能二選一:

image

⑤直接初始化賦值。

⑥構(gòu)造方法賦值。

注意:用setXXX()方法無法賦值。

二、權(quán)限修飾符

public這個(gè)關(guān)鍵字太常見了,它就是一個(gè)權(quán)限修飾符。

在Java語言里面有四種權(quán)限修飾符。

其實(shí)看字面意思也蠻好理解的:

①public:公共的。

  • 可以修飾類、成員變量、成員方法、構(gòu)造方法。

  • 被public修飾的成員,可以在任何一個(gè)類中被調(diào)用,不管同包或不同包。

  • 一般情況下,類的構(gòu)造方法、成員方法會(huì)使用public,方便創(chuàng)建對(duì)象和調(diào)用方法。

②protected:受保護(hù)的。

  • 可以修飾成員變量,成員方法,構(gòu)造方法,不能修飾類(此處指外部類、內(nèi)部類不考慮)。

  • 被protected修飾的成員,只能被同包下的其他類訪問。

  • 如果不同包下的類要訪問被protected修飾的成員,這個(gè)類必須是其子類。

③default:默認(rèn)的。

  • 可以修飾類,成員變量,成員方法,構(gòu)造方法。

  • 若是沒有加權(quán)限修飾符,其訪問能力就是default權(quán)限。

  • 被默認(rèn)權(quán)限修飾后,其只能被本類以及同包下的其他類訪問。不同包的子類都不行。

④private:私有的。

  • 可以修飾成員變量,成員方法,構(gòu)造方法,不能修飾類(此處指的是外部類,內(nèi)部類不加以考慮)。

  • 被private修飾的成員只能在其修飾的本類中訪問,在其他類中不能調(diào)用,但是被private修飾的成員可以通過set和get方法向外界提供訪問方式 。

  • private類型的方法都默認(rèn)為是final方法,因而也不能被子類重寫

權(quán)限是從大到小的:

public > protect >default>private

三、abstract和static修飾符

修飾符除了權(quán)限修飾符和final修飾符,常見的還有abstract和static修飾符。

這兩個(gè)關(guān)鍵字前面都學(xué)過,做一個(gè)回顧:

1.abstact修飾類

表明這是一個(gè)抽象類。

抽象類不能創(chuàng)建對(duì)象生成實(shí)例,需要使用子類實(shí)例化

2.abstact修飾方法

表明這是一個(gè)抽象方法,只有方法名,沒有方法體。

需要子類重寫。

3.static修飾方法

靜態(tài)方法只能訪問靜態(tài)變量。

靜態(tài)方法可以用類名直接調(diào)用。

4.static修飾變量

也可稱為類變量,局部變量不能被static修飾。

也可以用類名直接調(diào)用。

5.static修飾代碼塊

隨著類的加載而加載一次,相當(dāng)于初始化賦值。

總結(jié):

image
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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