溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中final如何使用

發(fā)布時間:2022-05-30 10:29:43 來源:億速云 閱讀:141 作者:iii 欄目:開發(fā)技術(shù)

這篇“Java中final如何使用”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java中final如何使用”文章吧。

一、理解

final:最終的

二、作用

final 可以用來修飾的結(jié)構(gòu):類、方法、變量

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 標(biāo)記的成員變量必須在聲明(顯式初始化)時或在 每個構(gòu)造器中或代碼塊中顯式賦值,然后才能使用。

如:final double MY_PI = 3.14;

3.2 修飾-局部變量

使用 final 修飾局部變量時,表明此形參是一個常量。當(dāng)我們調(diào)用此方法時,給常量形參賦一個實參。一旦賦值以后,就只能在方法體內(nèi)使用此形參,且不能進(jìn)行重新賦值。

三、經(jīng)典題目

//題目一:
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的靜態(tài)初始化塊");
	}
	{
		System.out.println("Root的普通初始化塊");
	}
	public Root(){
		super();
		System.out.println("Root的無參數(shù)的構(gòu)造器");
	}
}
class Mid extends Root{
	static{
		System.out.println("Mid的靜態(tài)初始化塊");
	}
	{
		System.out.println("Mid的普通初始化塊");
	}
	public Mid(){
		super();
		System.out.println("Mid的無參數(shù)的構(gòu)造器");
	}
	public Mid(String msg){
		//通過this調(diào)用同一類中重載的構(gòu)造器
		this();
		System.out.println("Mid的帶參數(shù)構(gòu)造器,其參數(shù)值:"
			+ msg);
	}
}
class Leaf extends Mid{
	static{
		System.out.println("Leaf的靜態(tài)初始化塊");
	}
	{
		System.out.println("Leaf的普通初始化塊");
	}	
	public Leaf(){
		//通過super調(diào)用父類中有一個字符串參數(shù)的構(gòu)造器
		super("小老師ir");
		System.out.println("Leaf的構(gòu)造器");
	}
}
public class LeafTest{
	public static void main(String[] args){
		new Leaf(); 
		System.out.println();
		new Leaf();
	}
}
/*output:
Root的靜態(tài)初始化塊
Mid的靜態(tài)初始化塊
Leaf的靜態(tài)初始化塊
Root的普通初始化塊
Root的無參數(shù)的構(gòu)造器
Mid的普通初始化塊
Mid的無參數(shù)的構(gòu)造器
Mid的帶參數(shù)構(gòu)造器,其參數(shù)值:小老師ir
Leaf的普通初始化塊
Leaf的構(gòu)造器
Root的普通初始化塊
Root的無參數(shù)的構(gòu)造器
Mid的普通初始化塊
Mid的無參數(shù)的構(gòu)造器
Mid的帶參數(shù)構(gòu)造器,其參數(shù)值:小老師ir
Leaf的普通初始化塊
Leaf的構(gòu)造器
*/

以上就是關(guān)于“Java中final如何使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI