一、final關鍵字
1.如果一個類被final修飾符所修飾,表示該類不可能有子類,這樣的類就叫做最終類。final關鍵字可以修飾類、變量、方法。
2.final關鍵字修飾類、修飾方法、修飾變量的特點
final關鍵字修飾類:不能被別的類繼承;
final關鍵字修飾方法:方法也不能被覆蓋,也就是方法不能被繼承的子類重寫;
final關鍵字修飾變量:成員變量、局部變量是常量,僅一次賦值。
二、final關鍵字修飾類
1.當類被final關鍵字修飾,表示這個類是不能被繼承的。
2.final關鍵字修飾類例子
//定義Fruit類 final class Fruit{ //info()方法 public void info(){ System.out.print("fruit"); } } //定義Cherry繼承Fruit類 class Cherry extends Fruit{ //infor()方法 public void info(){ System.out.print("cherry"); } } public class p24 { public static void main(String[] args) { // TODO Auto-generated method stub Cherry c=new Cherry();//實例化子類Cherry對象 c.info();//調用info()方法 } }
輸出的結果是:
從上面的編譯結果可以看出是錯誤的,因為final關鍵字修飾Fruit類,當Cherry類繼承Fruit類時,編譯出現了「Unresolved compilation problem: The type Cherry cannot subclass the final class Fruit」表示Cherry類型不能將final類水果子類化,所以final修飾的類是不能被別的類繼承的。
三、final關鍵字修飾方法
1.final關鍵字修飾方法,表示該類的子類的不可以重寫方法。
2.final關鍵字修飾方法案例
//定義Fruit類 class Fruit{ //使用final修飾info()方法 public final void info(){ System.out.print("fruit"); } } //定義Cherry繼承Fruit類 class Cherry extends Fruit{ //重寫Fruit類的info()方法 public void info(){ System.out.print("cherry"); } } public class p24 { public static void main(String[] args) { // TODO Auto-generated method stub Cherry c=new Cherry();//實例化子類Cherry對象 c.info();//調用info()方法 } }
3.運行的結果是:
從上面的代碼中編譯結果是錯誤的,因為Cherry類重寫Fruit類的info()方法,我們可以看到final關鍵字修飾Fruit類的info()方法,所以final關鍵字修飾的方法是最終的,子類是不能對這個方法進行重寫的。如果父類定義的某個方法,不想讓子類重寫,就可以使用這個final關鍵字修飾方法。
四、final關鍵字修飾變量
1.final關鍵字修飾變量時,變量就變成常量,也就是一旦被賦值,就不能重新賦值。
2.final關鍵字修飾成員變量,需要在定義顯示指定初始值。
3.final關鍵字修飾局部變量,可以在定義時指定初始值,也可以不指定初始值。
4.final關鍵字修飾局部變量的例子
final int i = 3;//第一次賦值 i= 6;//再次賦值
上面代碼中會出現編譯錯誤,因為是重新給i賦值,用final關鍵字修飾int類型變量i,被final關鍵字修飾的變量為常量,只能被賦值一次,不可以被重新賦值,i是基本數據類型,i的內容是值。
5.final關鍵字修飾成員變量例子
//定義Fruit類 class Fruit{ final String name;//final關鍵字修飾name屬性 double weight=66;//水果的重量weight屬性 //info()方法列印水果信息 public final void info(){ System.out.print("我是一個"+name+"重量為:"+weight+"g!"); } } public class p24 { public static void main(String[] args) { // TODO Auto-generated method stub Fruit f=new Fruit();//實例化Fruit對象 f.info();//調用info()方法 } }
運行的結果是:
從上面的運行結果我們可以看到編譯是錯誤的,因為final關鍵字修飾的成員變量,在定義的時要給它一個初始值。
五、總結
本文主要介紹了final關鍵字修飾類、final關鍵字修飾方法、final關鍵字修飾變量。
final關鍵字修飾類說明了是不能被別的類繼承的。final關鍵字修飾方法表示該類的子類的方法是不可以被重寫的。
final關鍵字修飾變量時,成員變量、局部變量是常量,僅一次賦值。final關鍵字修飾類、方法、變量也通過案例幫助理解。
本文轉載自微信公眾號「 Java進階學習交流」,可以通過以下二維碼關注。轉載本文請聯繫 Java進階學習交流公眾號。
【編輯推薦】
【責任編輯:
武曉燕TEL:(010)68476606】