首頁  >  文章  >  Java  >  Java中final關鍵字的使用方式

Java中final關鍵字的使用方式

WBOY
WBOY轉載
2023-04-26 19:37:051350瀏覽

一、理解

final:最終的

二、作用

final 可以用來修飾的結構:類別、方法、變數

1. 修飾-類別

final 用來修飾一個類,表示此類不能被其它類別所繼承,提高安全性,提高程式的可讀性。

例如:String類別、System類別、StringBuffer類別…

程式碼示範:

final class A{
}
class B extends A{ //錯誤,不能被繼承。
}

2. 修飾-方法

final 用來修飾方法:表示此方法不能被子類別重寫。

例如:Object類別中getClass();

#程式碼示範:

class A {
   public final void print() {
     System.out.println("A");
   } 
}
class B extends A {
    public void print() { 
    // 错误,不能被重写。
    } 
}

3. 修飾-變數

final 修飾的變數(成員變數或局部變數)稱為常數。名稱大寫,且只能賦值一次。

static final 用來修飾屬性:全域常數。

程式碼示範:

class A {
   private final String INFO = "嘻嘻"; //声明常量
     public void print() {     
     //INFO = "哈哈";
     //The final field A.INFO cannot be assigned
     } 
}
3.1 修飾-成員變數(屬性)

final 標記的成員變數必須在宣告(明確初始化)時或在每個建構器中或程式碼區塊中明確賦值,然後才能使用。

如:final double MY_PI = 3.14;

3.2 修飾-局部變數

使用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中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除