final修飾符解析

2021-05-27 11:13:59 字數 1538 閱讀 2273

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...