關鍵詞final的作用
final這個關鍵字,可以說在開發過程中經常遇到,為了更好的了解它,下面淺談一下自己對final這個關鍵詞的了解
【1】final關鍵字可以用來修飾變量
final修飾變量是我們用到最多的地方,被final修飾的變量,如果是基本資料類型的變量,則一旦被指派後便不可更改。
如果是引用類型的變量,則一旦執行個體化對象後,便不可讓這個變量指向其他對象,但是可以改變該對象裡面的屬性
下面使用代碼進行示範
此時編譯報錯:不可進行指派
嘗試改變final修飾的引用變量的屬性
package day0808;
public class TestFinal {
public final int i=1;
public final Student student=new Student("tom");
public void changeFinal(){
student.setName("jack");
System.out.println(student.toString());
}
public static void main(String args[]){
TestFinal testFinal=new TestFinal();
testFinal.changeFinal();
}
}
輸出為
【2】final關鍵字可以用來修飾方法
final關鍵字修飾父類的一個方法時,子類不可重寫這個方法
所有的private方法其實都被隐式地聲明為final
下面進行代碼示範
package day0808;
public class Animal {
private String name;
public final void eat(){
System.out.print("小動物在吃東西");
}
}
可以看得出來,編譯直接報錯:
但是,如果我們把父類中的eat()方法的通路修飾符改成private,那我們可以發現,編譯器似乎不報錯了,但是子類依然沒有重寫eat()方法,而僅僅隻是聲明了一個新方法。
【3】final關鍵字可以用來修飾類
被final修飾的類不可以被繼承,final類裡面的成員方法都會被隐式地聲明為final
當我們寫了一個類,卻不希望别人對其進行任何改動時,我們就可以把該類聲明為final
String類就是被final修飾的