---恢復內容開始---
在Java中,final關鍵字可以用來修飾類、方法和變量(包括成員變量和局部變量)。下面就從這三個方面來了解一下final關鍵字的基本用法。
1、修飾類
當用final修飾一個類時,表明這個類不能被繼承。也就是說,如果一個類你永遠不會讓他被繼承,就可以用final進行修飾。
final類中的成員變量可以根據需要設為final,但是要注意final類中的所有成員方法都會被隱式地指定為final方法。
例如,創建一個類的前提下:
1 final class person{ 2 public people(){ 3 4 } 5 } 6 7 class man extends people{ 8 9 }
結果會報錯,類型man不能成為people的子類;
2、修飾方法
在使用final時,注意,只有在想明確禁止該方法在子類中被覆蓋的情況下才將方法設置為final。final修飾的方法表示此方法
已經是“最后的、最終的”含義,亦即此方法不能被重寫(可以重載多個final修飾的方法)。此處需要注意的一點是:因為重
寫的前提是子類可以從父類中繼承此方法,如果父類中final修飾的方法同時訪問控制權限為private,將會導致子類中不能
直接繼承到此方法,因此,此時可以在子類中定義相同的方法名和參數,此時不再產生重寫與final的矛盾,而是在子類中重
新定義了新的方法。(注:類的private方法會隱式地被指定為final方法。)
public class b extends a{ public static void main(String args[]){ } public void getName(){ } } class a { private final void getName(){ } /* 因為private修飾,子類不能繼承此方法,因此,子類中的getName是重新編譯的,屬於正常; */ public final void getName(){ } /* 因為public修飾,子類可以繼承,與final矛盾,導致重寫了final方法,編譯錯誤。 */ }
3、修飾變量
final修飾變量只能被賦值一次,賦值后不再改變。
final修飾成員變量,必須初始化方法。
當函數的參數類型是final時,說明該參數是只讀型,不能被更改;
1 class man{ 2 3 priavate final int i = 0; 4 5 public man(){ 6 i = 1; 7 //i等於1報錯; 8 final Object obj =new Object(); 9 obj = new Object(); 10 //obj報錯; 11 12 } 13 14 }
---恢復內容結束---