java學習 理解final

2021-09-04 09:09:33 字數 1035 閱讀 5316

final有三種修飾情況:

1)修飾成員

分配一塊儲存空間,只能賦值一次。可以在執行時賦值。

static final和final的區別在於前者是類級(全域性),後者是物件級(區域性)。

final修飾物件或陣列的意思是變數的引用不能改,但是引用物件或陣列的賦值是可以改的。

2)修飾方法

final修飾方法的引數時,意味著你無法在方法中更改引數引用所指向的物件。

final修飾的方法不會被過載。

final修飾的方法允許編譯器轉為內嵌,避免呼叫的開銷。

3)修飾類

final修飾的類禁止繼承(出於安全考慮)。

下面的**描述了乙個人嚇跑一頭豬和乙隻狗的故事:

package testfinal;  

public

class

entry  

}  class

person  

}   

class

animal  

}  class

pig 

extends

animal     

}  class

dog 

extends

animal     

}  程式執行結果:

ho!pig run ...

ho!dog run ...

請注意到person.frighten對animal.run的呼叫,因為輸入引數的子類不同,實際執行的**片斷是不同的,這就是「多型」。

如果animal的run方法宣告為private,不影響dog和pig可以定義自己的run方法,但是「多型」就沒有了,person.frighten中animal.run會報錯。

如果animal的run方法宣告為final,person.frighten中animal.run不會報錯,但是dog和pig中定義run方法會報「不允許過載」的錯誤資訊,當然也就談不上「多型」了。

java學習 理解final

final有三種修飾情況 1 修飾成員 分配一塊儲存空間,只能賦值一次。可以在執行時賦值。static final和final的區別在於前者是類級 全域性 後者是物件級 區域性 final修飾物件或陣列的意思是變數的引用不能改,但是引用物件或陣列的賦值是可以改的。2 修飾方法 final修飾方法的引...

java學習筆記 final

2007.6.12 1 關於final 1 用final宣告的變數,相當於將該變數當作乙個常數,不能改變,所以其使用 之前必須初始化,宣告時不初始化也可以.2 用final宣告方法,作用有兩個 a 表示該方法在被繼承時不可重寫.b 處於執行效率的考慮 建議方法的 較少的時候才用final 因為用fi...

JAVA學習 final用法

final 最終的 可以用來修飾類 屬性 方法 1.final修飾類 這個類就不能被繼承。如 string類 stringbuffer類 system類 2.final修飾方法 不能被重寫。如 object類的getclass 3.final修飾屬性 此屬性就是乙個常量,一旦初始化後,不可再被賦值。...