前幾天學過方法重寫,也就是說,一個類繼承至父類,子類可以將父類的方法重寫。
但有的時候父類的方法要求固定,不能被更改。
該怎麼辦?
這就得學到一個新的修飾符了。
一、final修飾符
final,翻譯成中文就是「不可更改的 」。
顧名思義,它是一個修飾符,用於修改不可更改的內容。
被final修飾的類:不能被繼承。被final修飾的方法:不能被重寫。被final修飾的變量:不能被重新賦值。被final修飾的常量:名稱一般都有書寫規範,所有字母都大寫。多個單詞之間,使用下劃線進行分割。1.修飾類和方法
①final修飾類,類不能被繼承。
既然不能被繼承,那final類裡的方法也無法被重寫。
②final修飾方法,方法不能被重寫。
非final類中,也可以存著final方法。
註:其中final方法是可以被重載的(同名不同參)
2.修飾局部變量
③用final修飾基本數據類型局部變量。
只能賦值一次,不能再更改了,編譯會報錯。
基本數據類型不能更改的是值。
④用final修飾引用數據類型局部變量。
只能創建對象一次,不能再次創建對象,編譯會報錯。
引用數據類型不能更改的是對象的地址。
該對象的值是可以通過對應的setXXX()方法更改的。
3.修飾成員變量
成員變量和局部變量有一個區別在於:
成員變量是有默認值的。
所以用final修飾成員變量,它就不再有默認值了,必須一步直接賦值 。
初始化方式有兩種,只能二選一:
⑤直接初始化賦值。
⑥構造方法賦值。
注意:用setXXX()方法無法賦值。
二、權限修飾符
public這個關鍵字太常見了,它就是一個權限修飾符。
在Java語言裡面有四種權限修飾符。
其實看字面意思也蠻好理解的:
①public:公共的。
可以修飾類、成員變量、成員方法、構造方法。被public修飾的成員,可以在任何一個類中被調用,不管同包或不同包。一般情況下,類的構造方法、成員方法會使用public,方便創建對象和調用方法。②protected:受保護的。
可以修飾成員變量,成員方法,構造方法,不能修飾類(此處指外部類、內部類不考慮)。被protected修飾的成員,只能被同包下的其他類訪問。如果不同包下的類要訪問被protected修飾的成員,這個類必須是其子類。③default:默認的。
可以修飾類,成員變量,成員方法,構造方法。若是沒有加權限修飾符,其訪問能力就是default權限。被默認權限修飾後,其只能被本類以及同包下的其他類訪問。不同包的子類都不行。④private:私有的。
可以修飾成員變量,成員方法,構造方法,不能修飾類(此處指的是外部類,內部類不加以考慮)。被private修飾的成員只能在其修飾的本類中訪問,在其他類中不能調用,但是被private修飾的成員可以通過set和get方法向外界提供訪問方式 。private類型的方法都默認為是final方法,因而也不能被子類重寫權限是從大到小的:
public> protect >default>private
三、abstract和static修飾符
修飾符除了權限修飾符和final修飾符,常見的還有abstract和static修飾符。
這兩個關鍵字前面都學過,做一個回顧:
1.abstact修飾類
表明這是一個抽象類。
抽象類不能創建對象生成實例,需要使用子類實例化
2.abstact修飾方法
表明這是一個抽象方法,只有方法名,沒有方法體。
需要子類重寫。
3.static修飾方法
靜態方法只能訪問靜態變量。
靜態方法可以用類名直接調用。
4.static修飾變量
也可稱為類變量,局部變量不能被static修飾。
也可以用類名直接調用。
5.static修飾代碼塊
隨著類的加載而加載一次,相當於初始化賦值。
總結: