java中的final如何使用和理解

2021-08-14 11:48:28 字數 1716 閱讀 2094

1、

final類

不能被繼承,因此

final類

的成員方法沒有機會被覆蓋,預設都是final的。在設計類時候,如果這個類不需要有子類,類的實現細節不允許改變,並且確信這個類不會再被擴充套件,那麼就設計為

final類

。 final方法不能被子類的方法覆蓋,但可以被繼承。

public

class

test1  

public

void

f1()  

//無法被子類覆蓋的方法 

public

final

void

f2()  

public

void

f3()  

private

void

f4()  

} public

class

test2 

extends

test1  

public

static

void

main(string args)  

}

2、

final方法

如果乙個類不允許其子類覆蓋某個方法,則可以把這個方法宣告為final方法。 使用final方法的原因有二: 第

一、把方法鎖定,防止任何繼承類修改它的意義和實現。 第

二、高效。編譯器在遇到呼叫final方法時候會轉入內嵌機制,大大提高執行效率。

3、

final變數

(常量) 用final修飾的成員變數表示常量,只能被賦值一次,

賦值後值無法改變

! final修飾的變數有三種:靜態變數、

例項變數

和區域性變數,分別表示三種型別的常量。 從下面的例子中可以看出,一旦給final變數初值後,值就不能再改變了。 另外,final變數定義的時候,可以先宣告,而不給初值,這種變數也稱為final空白,無論什麼情況,編譯器都確保空白final在使用之前必須被初始化。但是,final空白在final關鍵字final的使用上提供了更大的靈活性,為此,乙個類中的final資料成員就可以實現依物件而有所不同,卻有保持其恆定不變的特徵。

package

org.leizhimin; 

public

class

test3  

/** 

* @param args 

*/public

static

void

main(string args)  

private

void

test()  

public

void

test2()  

}

4、

final引數

當函式引數為final型別時,你可以

讀取使用該引數,但是

無法改變該引數的值

。 注:父類的private成員方法是不能被子類方法覆蓋的,因此private型別的方法預設是final型別的。 final不能用於修飾構造方法。

public

class

test4  

public

void

f1(final

inti)  

}

java中的final如何使用和理解

1 final類不能被繼承,因此final類的成員方法沒有機會被覆蓋,預設都是final的。在設計類時候,如果這個類不需要有子類,類的實現細節不允許改變,並且確信這個類不會再被擴充套件,那麼就設計為final類。final方法不能被子類的方法覆蓋,但可以被繼承。public class test1 ...

java中的final如何使用和理解

1 final類不能被繼承,因此final類的成員方法沒有機會被覆蓋,預設都是final的。在設計類時候,如果這個類不需要有子類,類的實現細節不允許改變,並且確信這個類不會再被擴充套件,那麼就設計為final類。final方法不能被子類的方法覆蓋,但可以被繼承。public class test1 ...

java中的final如何使用和理解

1 final類不能被繼承,因此final類的成員方法沒有機會被覆蓋,預設都是final的。在設計類時候,如果這個類不需要有子類,類的實現細節不允許改變,並且確信這個類不會再被擴充套件,那麼就設計為final類。final方法不能被子類的方法覆蓋,但可以被繼承。2 final方法 如果乙個類不允許其...