首發日期:2018-03-24 final關鍵字: final的作用:相當於使修飾的變數、方法或類“固定、最終化”,使得修飾的變數、方法、類不能再做改變【可以限制繼承的重寫】。 final可以修飾類、方法、變數。 final修飾的類不可以被繼承。 final修飾的方法不可以被覆蓋(重寫) final... ...
首發日期:2018-03-24
final關鍵字:
- final的作用:相當於使修飾的變數、方法或類“固定、最終化”,使得修飾的變數、方法、類不能再做改變【可以限制繼承的重寫】。
- final可以修飾類、方法、變數。
- final修飾的類不可以被繼承。
- final修飾的方法不可以被覆蓋(重寫)
- final修飾的變數是一個常量,final修飾的變數必須顯式初始化,並且只能初始化一次。【初始化手段可以是直接聲明並賦值,也可以在初始化代碼塊中或構造函數中賦值,或者形式參數傳參】
- final不能跟abstract interface等共存,因為final修飾的類不能被繼承、重寫
- final修飾引用變數:可以修改內部數據,但不能修改指向的對象
補充:
內部類如果要使用局部變數,只能訪問被final修飾的局部變數:
局部變數的生命周期與內部類不同,當局部變數被final修飾的時候,這個被final修飾的變數就變成了內部類中的數據成員
(Java採用了一種copy local variable(複製局部變數)的方式來實現, 也就是說把定義為final的局部變數拷貝過來用,而引用的也可以拿過來用,只是不能重新賦值。從而造成了可以access local variable(訪問局部變數)的假象,而這個時候由於不能重新賦值, 所以一般不會造成不可預料的事情發生。)