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修飾屬性 此屬性就是乙個常量,一旦初始化後,不可再被賦值。...