1.final變數
final變數定義:final變數一經初始化就不能再指向其它物件。
在c++中它是乙個const指標,而不是指向const變數的指標,const指標的意思是說它只能一直指向初始化時的那個位址,但那個位址中物件本身是可以修改的。而指向const變數的指標是說物件本身是不能修改的。
/**
* stringbuffer是引用物件,
* 如果說是string | int 等基本型別的話 final之後就是常量,沒有指向一說
*/final stringbuffer ss = new stringbuffer("aaaaa");
ss = new stringbuffer("bbbbb"); // 錯誤 ss 不能再指向其它物件
*final區域性變數:可以先宣告再初始化,但是沒必要,一般都是宣告處初始化。
final int a = 1;
* final成員變數:只能在宣告處 | 建構函式裡 賦值
// 宣告處
final int a = 0;
final int b;
// 建構函式
public test()
*final方法引數變數:防止引數在方法體中被修改【其中修改引用型別的話,會影響到函式外面的值】
作用等同於用引數初始化了乙個final區域性變數。
void testfinalparram()
// final基本資料型別 方法引數引數
public void testint(final int param)
// final引用型別 方法引數引數
public void testint(final stringbuffer ss) catch (interruptedexception e)
} // 等同於
// final基本資料型別 方法引數引數
public void testint1(int param)
// final引用型別 方法引數引數
public void testint1(stringbuffer ss)
2.final方法
1.可以被繼承,但是不能被子類的方法覆蓋和修改。
【不能出現在子類中,但是能被子類呼叫】
2. 優化效率,可以被編譯器內聯處理
3.final類
1.不能被繼承 所有的方法預設都是final
final修飾引數、區域性變數
final修飾符和abstract修飾符
用final修飾的類無法被繼承 用final修飾的方法可以被繼承但是不能被重寫 用final修飾的變數表示常量,只能賦值一次 abstract修飾符可以修飾方法也可以修飾類,如果修飾方法,那麼這個方法就是抽象方法,如果修飾類,那麼就是抽象類。抽象類中可以沒有抽象方法,但是如果有乙個類中有抽象方法,那...
final 修飾符使用
將以下 copy到eclipse中,可看出效果 用final修飾的方法無法重寫 public class main class maintmp extends main 呼叫 public void getsay 過載 public string say int i,string s 用final修...
Final修飾符總結
fianl修飾的變數 例項變數必須顯式指定初始值,而且只能在如下3個位置指定初始值 定義final例項變數時指定初始值 在非靜態初始化塊中指定初始值 在構造器中指定初始值 例1 public class finalinstancevariabletest public finalinstanceva...