final 關鍵字

/*
 * final可用來修飾
 * 基本數據類型   相當於常量 無法改變其值
 * 引用數據類型   不可以改變變量所指向的對象  但是可以改變對象的內容 如屬性
 * 修飾方法          方法不可以被重寫
 * 修飾類       不可以被繼承
 * 修飾形參   包括基本和引用數據類型
 * */

class Person
{
	String name;
	int age;
	Person()
	{
		
	}
	Person(String name,int age)
	{
		this.name = name;
		this.age = age;
	}
	public void showInfo()
	{
		System.out.println("姓名"+name+"年齡"+age);
	}
}
class FinalTest
{	
	//final 修飾的基本數據類型和引用數據類型  要麼通過構造函數初始化  要麼直接初始化
	final int N=21;
	final Person P;//直接初始化final Person P =new Person() ;
	FinalTest()  //構造函數初始化 final修飾的變量
	{
		P =new Person("張無忌",25) ;//P =new Person() ;
		//N = 21;
	}
	 //有返回值類型 方法名和類名相同 爲一般函數 而不是構造函數
	public void FinalTest2(final Person p)
	{
		p.age = 15;  //形參被final修飾 函數內只能改變對象屬性或方法 引用p不能指向新的對象
		//P =new Person("康康",25) ; 錯誤  不可以改變對象
	}
	
}
public class FinalDemo {
	public static void main(String[] args) {
		FinalTest f = new FinalTest();
		System.out.println(f.N);
		//f.N = 24; final修飾的N無法重新定義新值
		//final修飾的類類型引用變量 是無法重新建立新的對象的  但是可以改變對象內的內容
		//f.P = new Person("黃飛鴻",15);
		f.P.name = "張三丰";  //可以改變對象的內容
		f.P.showInfo();
		Person t = new Person("唐太宗",23);
		f.FinalTest2(t);
		t.showInfo();
		
	}

}








發佈了30 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章