final

sellingpear發表於2024-06-20

fina在程式之中描述的是種終接器的概念,在java裡面使用final關鍵字可以實現功能:

  • 定義不能夠被繼承的類
  • 定義不能夠被覆寫的方法、常量
    範例:使用final定義不能被繼承類
class  JavaDemo
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
	}
}

final class Channel//這個類不能夠有子類
{
	
}
class DabaseChannel extends Channel//試者去繼承final定義的Channel
{
}

在這裡插入圖片描述當子類繼承了父類之後實際上是可以進行父類中方法覆寫的,但是如果你不希望某一個方法被子類覆寫,就可以使用fanal來進行定義。
範例:

class  JavaDemo
{
	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
	}
}

class Channel
{
	public final void connect(){//這個方法不能被覆寫
		
	}
}
class DabaseChannel extends Channel
{
	public void connect(){//試者覆寫這個方法
		
	}
}

在這裡插入圖片描述在有些系統開發之中,可能使用1表示開關開啟,使用0表示關閉,如果現在要直接操作0或1會造成混亂,所以就希望通過一些名稱來表示0或者1。在final關鍵字裡面有一個重要的應用技術,可以利用其定義常量,常量的內容一旦定義不可修改。
範例:

class  JavaDemo
{
	public static void main(String[] args) 
	{
		
	}
}

class Channel
{
	private final int on = 1;//on就是常量,不能再被修改
	private final int off = 0;
	public  void setOn(){
		this.on = 2;
	}
}

在這裡插入圖片描述
常量往往是公共的定義,為了可以體現出共享的概念,往往會使用一種全域性常量的形式來定義:public static final

public static final int ON= 1;

在定義全域性常量的時候每一個字母都必須大寫表示。
範例:

class  JavaDemo
{
	public static void main(String[] args) 
	{
		String strA = "www.baidu.com";
		String strB = "www."+"baidu"+".com";
		System.out.println(strA == strB);
	}
}



在這裡插入圖片描述

在方法的時候也可以使用final來定義引數,此時也表示一個常量的概念。

class  JavaDemo
{
	public static void main(String[] args) 
	{
		final String info = "baidu";//此引數為常量
		String strA = "www.baidu.com";
		String strB = "www."+info+".com";
		System.out.println(strA == strB);
	}
}



在這裡插入圖片描述
如果info是變數則結果為false,但因為info變成了常量不會在改變,所以結果為true。

相關文章