今天長沙中公優(yōu)就業(yè)java培訓(xùn)機構(gòu)小編為大家介紹“java中final修飾變量、修飾符、方法、類的詳細用法”,希望通過此文能夠幫助到大家,下面就隨小編一起看看java中final修飾變量、修飾符、方法、類的詳細用法吧。
final可以用來修飾變量(包括類屬性、對象屬性、局部變量和形參)、方法(包括類方法和對象方法)和類。
1、final 修飾變量
final修飾的變量表示此變量是“最后的、最終的”含義。一旦定義了final變量并在首次為其顯示初始化后,final修飾的變量值不可被改變。
所以,final修飾變量時就成了 常量(一旦賦值不能改變)
常量名一般要全部大寫;
final int BOY = 1;
這里需要注意以下幾個問題:
final修飾的變量,無論是類屬性、對象屬性、形參還是局部變量,這些變量都是需要進行顯示初始化(即為其顯示指定初始值)。對于final屬性來講,系統(tǒng)不會提供默認值,
對于final修飾的形參,由于是實參傳遞過來的,很好理解。
對于final修飾的局部變量,與未用final修飾的變量一樣,都是需要顯示初始化。即局部變量都是需要顯示初始化的。
對于一般的類屬性和對象屬性,由類和對象的初始化過程中可以看出,首先都進行了默認初始化。然后對有顯示賦值的變量才再進行顯示初始化。
但對final修飾的類屬性和對象屬性而言,如果不顯示初始化,其默認將是進行默認初始化后的值,這與final本身出發(fā)點矛盾,
因此,Java語法規(guī)定:
final修飾的類屬性和變量屬性必須要進行顯示初始化賦值。
另外,無論對于基本數(shù)據(jù)類型還是引用數(shù)據(jù)類型,final修飾的變量都是首次顯示初始化后值都不能修改。對于基本數(shù)據(jù)類型,很好理解。
對于引用數(shù)據(jù)類型,引用變量指向的是實際的對象,但其存儲的是所指向?qū)ο蟮牡刂?,因此,其值不能修改并不意味著其所指向的對象不能修改?/p>
實例變量往往有三次賦值機會,
分配空間,初始化屬性,調(diào)用構(gòu)造方法
2、final 修飾方法
final修飾的方法表示此方法已經(jīng)是“最后的、最終的”含義,亦即此方法不能被重寫(可以重載多個final修飾的方法)。
此處需要注意的一點是:因為重寫的前提是子類可以從父類中繼承此方法,如果父類中final修飾的方法同時訪問控制權(quán)限為private,
將會導(dǎo)致子類中不能直接繼承到此方法,因此,此時可以在子類中定義相同的方法名和參數(shù),此時不再產(chǎn)生重寫與final的矛盾,
而是在子類中重新定義了新的方法。
class Super{
//加上final之后就不能再覆蓋了
//final修飾方法時表示該方法不能被子類覆蓋
public final void method(){
}
}
class Sub extends Super{
//方法的覆蓋
}
3、final修飾類
final修飾類即表示此類已經(jīng)是“最后的、最終的”含義。因此,用final修飾的類不能被繼承,即不能擁有自己的子類。
如果視圖對一個已經(jīng)用final修飾的類進行繼承,在編譯期間或發(fā)生錯誤。
/final類不能被子類繼承,final讓此類斷子絕孫,所以當然不能被子類覆蓋
final class Super{
//加上final之后就不能再覆蓋了
//final修飾方法時表示該方法不能被子類覆蓋
public final void method(){
}
}
以上就是長沙中公優(yōu)就業(yè)java培訓(xùn)機構(gòu)小編介紹的“java中final修飾變量、修飾符、方法、類的詳細用法”的內(nèi)容,希望對大家有幫助,更多java最新資訊請繼續(xù)關(guān)注長沙中公優(yōu)就業(yè)java培訓(xùn)機構(gòu)官網(wǎng),每天會有精彩內(nèi)容分享與你。
相關(guān)免費視頻教程推薦
java入門教程下載——final修飾方法局部變量:http://www.bjpowernode.com/xiazai/2578.html