final是Java中的一個(gè)關(guān)鍵字,主要表示“最終態(tài),最終的,不可修改”的意思;它可以修飾Java中的類,方法,屬性等。
一、 final類:
當(dāng)final修飾Java中的類的時(shí)候,表示該類不能被繼承,即表示該類不能有子類,在JDK當(dāng)中,用final修飾的類常見的有:String、Math、Long...等等;
二、final方法:
當(dāng)final修飾Java類中的方法的時(shí)候,表示該方法不能被重寫,不能被覆蓋,但是可以被繼承,但前提是父類的方法的訪問控制權(quán)限不為private;
三、final屬性:
當(dāng)final修飾Java類中的屬性的時(shí)候,表示該屬性只能被一次性復(fù)制,不能被修改,但一定要記住的是,被final修飾的屬性,無論是類屬性,對象屬性,還是局部變量,一定是要進(jìn)行初始化的;如果不進(jìn)行初始化,則該變量使用的是系統(tǒng)默認(rèn)其初始化的一個(gè)值,這與final本身我們給他賦的最終值相違背,所以在Java中規(guī)定,final修飾的類屬性和變量屬性必須要進(jìn)行初始化賦值,如果在聲明的時(shí)候沒有給變量賦值,那么一定要在構(gòu)造方法當(dāng)中給final賦值;final和static通常放在一起使用表示常量;
四、final參數(shù):
當(dāng)final修飾Java方法中的參數(shù)的時(shí)候,表示該參數(shù)只能從外界傳入,并且不能修改,傳進(jìn)來是什么值,在方法體內(nèi)部就是什么值,不能被修改;
package test.keyword._final; * 該類被final修飾,所以該類被子類繼承,不能有子類 public final class FinalClass { // 該屬性被final修飾,并對其進(jìn)行初始化,但不能對其進(jìn)行修改 public final String param1 = '不可變屬性'; // 該屬性被final修飾,但沒有對其初始化,我們將它初始化在了構(gòu)造函數(shù)當(dāng)中,但不能對其進(jìn)行修改 public FinalClass(int param2) { System.out.println('該類不能有子類'); // 該方法被final修飾,所以該方法不能被子類重寫,覆蓋,但是可以被子類繼承 public final void methodA() { // param1 = '參數(shù)修改'; // 錯(cuò)誤的 // param2 = 0; // 錯(cuò)誤的 System.out.println('該方法不能被子類重寫'); // 該方法當(dāng)中的參數(shù)被final修飾,所以在方法體當(dāng)中,不能對參數(shù)數(shù)值進(jìn)行修改 public void methodB(final String param3) { // param3 = '參數(shù)修改'; // 錯(cuò)誤的
|