final:最終的
final 可以用來修飾的結構:類別、方法、變數
final 用來修飾一個類,表示此類不能被其它類別所繼承,提高安全性,提高程式的可讀性。
例如:String類別、System類別、StringBuffer類別…
程式碼示範:
final class A{
}
class B extends A{ //錯誤,不能被繼承。
}
final 用來修飾方法:表示此方法不能被子類別重寫。
例如:Object
類別中getClass();
#程式碼示範:
class A { public final void print() { System.out.println("A"); } } class B extends A { public void print() { // 错误,不能被重写。 } }
final 修飾的變數(成員變數或局部變數)稱為常數。名稱大寫,且只能賦值一次。
static final 用來修飾屬性:全域常數。
程式碼示範:
class A { private final String INFO = "嘻嘻"; //声明常量 public void print() { //INFO = "哈哈"; //The final field A.INFO cannot be assigned } }
final 標記的成員變數必須在宣告(明確初始化)時或在每個建構器中或程式碼區塊中明確賦值,然後才能使用。
如:final double MY_PI = 3.14;
使用final 修飾局部變數時,表示此形參是一個常量。當我們呼叫此方法時,給常量形參賦一個實參。一旦賦值以後,就只能在方法體內使用此形參,且不能重新賦值。
//题目一: public class Test1 { public int addOne(final int x) { // return ++x; //Cannot assign a value to final variable 'x' return x + 1; } } //题目二: public class Something { public static void main(String[] args) { Other o = new Other(); new Something().addOne(o); } public void addOne(final Other o) { // o = new Other(); o.i++; } } class Other { public int i; } //题目三: class Root{ static{ System.out.println("Root的静态初始化块"); } { System.out.println("Root的普通初始化块"); } public Root(){ super(); System.out.println("Root的无参数的构造器"); } } class Mid extends Root{ static{ System.out.println("Mid的静态初始化块"); } { System.out.println("Mid的普通初始化块"); } public Mid(){ super(); System.out.println("Mid的无参数的构造器"); } public Mid(String msg){ //通过this调用同一类中重载的构造器 this(); System.out.println("Mid的带参数构造器,其参数值:" + msg); } } class Leaf extends Mid{ static{ System.out.println("Leaf的静态初始化块"); } { System.out.println("Leaf的普通初始化块"); } public Leaf(){ //通过super调用父类中有一个字符串参数的构造器 super("小老师ir"); System.out.println("Leaf的构造器"); } } public class LeafTest{ public static void main(String[] args){ new Leaf(); System.out.println(); new Leaf(); } } /*output: Root的静态初始化块 Mid的静态初始化块 Leaf的静态初始化块 Root的普通初始化块 Root的无参数的构造器 Mid的普通初始化块 Mid的无参数的构造器 Mid的带参数构造器,其参数值:小老师ir Leaf的普通初始化块 Leaf的构造器 Root的普通初始化块 Root的无参数的构造器 Mid的普通初始化块 Mid的无参数的构造器 Mid的带参数构造器,其参数值:小老师ir Leaf的普通初始化块 Leaf的构造器 */
以上是Java中final關鍵字的使用方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!