Java final 潤飾符常識點總結(必看篇)。本站提示廣大學習愛好者:(Java final 潤飾符常識點總結(必看篇))文章只能為提供參考,不一定能成為您想要的結果。以下是Java final 潤飾符常識點總結(必看篇)正文
final從字面上懂得寄義為“最初的,終究的”。在Java中也異樣表現出此種寄義。
final可以用來潤飾變量(包含類屬性、對象屬性、部分變量和形參)、辦法(包含類辦法和對象辦法)和類。
1. final潤飾類:
final潤飾類即表現此類曾經是“最初的、終究的”寄義。是以,用final潤飾的類不克不及被繼續,即不克不及具有本身的子類。
假如視圖對一個曾經用final潤飾的類停止繼續,在編譯時代或產生毛病。
2. final潤飾辦法:
final潤飾的辦法表現此辦法曾經是“最初的、終究的”寄義,亦即此辦法不克不及被重寫(可以重載多個final潤飾的辦法)。
此處須要留意的一點是:由於重寫的條件是子類可以從父類中繼續此辦法,假如父類中final潤飾的辦法同時拜訪掌握權限為private,
將會招致子類中不克不及直接繼續到此辦法,是以,此時可以在子類中界說雷同的辦法名和參數,此時不再發生重寫與final的抵觸,而是
在子類中從新界說了新的辦法。
public class B extends A { public static void main(String[] args) { } public void getName() { } } class A { /** * 由於private潤飾,子類中不克不及繼續到此辦法,是以,子類中的getName辦法是從新界說的、 * 屬於子類自己的辦法,編譯正常 */ private final void getName() { } /* 由於pblic潤飾,子類可以繼續到此辦法,招致重寫了父類的final辦法,編譯失足 public final void getName() { } */ }
3. final 潤飾變量:
final潤飾的變量表現此變量是“最初的、終究的”寄義。一旦界說了final變量並在初次為其顯示初始化後,final潤飾的變量值弗成被轉變。
這裡須要留意以下幾個成績:
1. final潤飾的變量,不管是類屬性、對象屬性、形參照樣部分變量,這些變量都是須要停止顯示初始化(即為其顯示指定初始值)。
關於final潤飾的形參,因為是實參傳遞過去的,很好懂得。
關於final潤飾的部分變量,與未用final潤飾的變量一樣,都是須要顯示初始化。即部分變量都是須要顯示初始化的。
關於普通的類屬性和對象屬性,由類和對象的初始化進程中可以看出,起首都停止了默許初始化。然後對有顯示賦值的變量才再停止顯示初始化。
但對final潤飾的類屬性和對象屬性而言,假如不顯示初始化,其默許將是停止默許初始化後的值,這與final自己動身點抵觸,是以,Java語律例定:
final潤飾的類屬性和變量屬性必需要停止顯示初始化賦值。
別的,不管關於根本數據類型照樣援用數據類型,final潤飾的變量都是初次顯示初始化後值都不克不及修正。關於根本數據類型,很好懂得。關於援用
數據類型,援用變量指向的是現實的對象,但其存儲的是所指向對象的地址,是以,其值不克不及修正其實不意味著其所指向的對象不克不及修正。
4. final潤飾變量後招致的“宏調換”/"宏變量"成績
Java 中宏變量/宏調換指的是在java代碼中在編譯期某些變量可以或許直接被其自己的值所調換,編譯到.class文件中。是以,編譯後的.class文件中曾經不存在此變了。
在String類型的變量中,有時刻常常碰到以下情形:
public class Test { public static void main(String[] args) { String country = "China"; String name = "qqyumidi"; String userInfo = country + name; //編譯後此處仍然是country和name變量 String user = "China" + "qqyumidi"; //編譯後此處直接釀成Chinaqqyumidi } }
在上述代碼中的第9行,編譯後的變量成果直接為Chinaqqyumidi。而第8行代碼中,因為country和name都是通俗的變量,編譯器沒法在編譯時直接肯定userInfo的值,是以
此處編譯後成果不直接是Chinaqqyumidi。
然則,假如願望第8行中的代碼在編譯期直接就可以表現為Chinaqqyumidi,就須要用到final潤飾符對country和name變量停止潤飾。
緣由:final潤飾符潤飾的變量在因為其自己的特征,在編譯期就可以直接肯定其值,且此值弗成變。在編譯進程中,可以直接將其變量直接轉換成其值自己去表現。
public class Test { public static void main(String[] args) { final String country = "China"; final String name = "qqyumidi"; String userInfo = country + name; //編譯後此處直接是Chianqqyumidi } }
以上就是小編為年夜家帶來的Java final 潤飾符常識點總結(必看篇)的全體內容了,願望對年夜家有所贊助,多多支撐~