更新時間:2019-09-14 09:00:00 來源:動力節點 瀏覽9675次
今天動力節點java培訓機構小編為大家介紹“java中final修飾變量、修飾符、方法、類的詳細用法”,希望通過此文能夠幫助到大家,下面就隨小編一起看看java中final修飾變量、修飾符、方法、類的詳細用法吧。
final可以用來修飾變量(包括類屬性、對象屬性、局部變量和形參)、方法(包括類方法和對象方法)和類。
1、final 修飾變量
final修飾的變量表示此變量是“最后的、最終的”含義。一旦定義了final變量并在首次為其顯示初始化后,final修飾的變量值不可被改變。
所以,final修飾變量時就成了 常量(一旦賦值不能改變)
常量名一般要全部大寫;
final int BOY = 1;
這里需要注意以下幾個問題:
final修飾的變量,無論是類屬性、對象屬性、形參還是局部變量,這些變量都是需要進行顯示初始化(即為其顯示指定初始值)。對于final屬性來講,系統不會提供默認值,
對于final修飾的形參,由于是實參傳遞過來的,很好理解。
對于final修飾的局部變量,與未用final修飾的變量一樣,都是需要顯示初始化。即局部變量都是需要顯示初始化的。
對于一般的類屬性和對象屬性,由類和對象的初始化過程中可以看出,首先都進行了默認初始化。然后對有顯示賦值的變量才再進行顯示初始化。
但對final修飾的類屬性和對象屬性而言,如果不顯示初始化,其默認將是進行默認初始化后的值,這與final本身出發點矛盾,
因此,Java語法規定:
final修飾的類屬性和變量屬性必須要進行顯示初始化賦值。
另外,無論對于基本數據類型還是引用數據類型,final修飾的變量都是首次顯示初始化后值都不能修改。對于基本數據類型,很好理解。
對于引用數據類型,引用變量指向的是實際的對象,但其存儲的是所指向對象的地址,因此,其值不能修改并不意味著其所指向的對象不能修改。
實例變量往往有三次賦值機會,
分配空間,初始化屬性,調用構造方法
2、final 修飾方法
final修飾的方法表示此方法已經是“最后的、最終的”含義,亦即此方法不能被重寫(可以重載多個final修飾的方法)。
此處需要注意的一點是:因為重寫的前提是子類可以從父類中繼承此方法,如果父類中final修飾的方法同時訪問控制權限為private,
將會導致子類中不能直接繼承到此方法,因此,此時可以在子類中定義相同的方法名和參數,此時不再產生重寫與final的矛盾,
而是在子類中重新定義了新的方法。
/*
final修飾方法
*/
class Super{
//加上final之后就不能再覆蓋了
//final修飾方法時表示該方法不能被子類覆蓋
public final void method(){
}
}
class Sub extends Super{
//方法的覆蓋
/*public final void method(){
}*/
}
3、final修飾類
final修飾類即表示此類已經是“最后的、最終的”含義。因此,用final修飾的類不能被繼承,即不能擁有自己的子類。
如果視圖對一個已經用final修飾的類進行繼承,在編譯期間或發生錯誤。
/final類不能被子類繼承,final讓此類斷子絕孫,所以當然不能被子類覆蓋
final class Super{
//加上final之后就不能再覆蓋了
//final修飾方法時表示該方法不能被子類覆蓋
public final void method(){
}
}
/*class Sub extends Super{
//方法的覆蓋
/*public final void method(){
}
}*/
以上就是動力節點java培訓機構小編介紹的“java中final修飾變量、修飾符、方法、類的詳細用法”的內容,希望對大家有幫助,更多java最新資訊請繼續關注動力節點java培訓機構官網,每天會有精彩內容分享與你。
相關免費視頻教程推薦
java入門教程下載——final修飾方法局部變量:http://www.dabaquan.cn/xiazai/2578.html
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習