final關(guān)鍵字的使用場景
final關(guān)鍵字可以修飾類围来、方法和變量;
final修飾變量:
表示該變量一旦獲得初始值之后便不能被改變皇帮;final可以修飾成員變量(包括類變量和實例變量)也可以修飾局部變量卷哩,形參;(final修飾的變量不能被重新賦值是錯誤的属拾,嚴格的說法是将谊,final修飾的變量不能被改變)
與其他成員變量不同的是,final修飾的成員變量(包括實例屬性和類屬性) 必須由程序員顯示初始化,系統(tǒng)不會對final變量進行隱式初始化; 當如果需要在初始化代碼塊 構(gòu)造器中對final變量進行初始化,則不要在初始化之前就訪問成員變量的值;
final修飾局部變量
系統(tǒng)不會對final修飾的局部變量進行初始化,必須進行顯示的初始化,所以,final修飾的成員變量可以進行一次的賦值,不能進行重復的賦值;
final修飾的形參:
因為在系統(tǒng)調(diào)用該方法時,系統(tǒng)根據(jù)傳入的參數(shù)來完成初始化,所以使用final修飾的形參不能被重新賦值;
final修飾的基本類型與引用類型
當final修飾基本類型變量時,不能被重新賦值,所以基本數(shù)據(jù)類型不能被改變;
但對于引用類型變量來說,保存的僅僅是一個引用,final只能保證這個引用的地址不能被改變,即一直引用同一個對象,但這個對象完全可以改變;
final修飾的方法
final修飾的方法不能被重寫,所以不希望子類重寫父類的某個方法,可以使用final修飾該方法;
如果使用final修飾一個帶有private修飾符的方法,那么依然可以在子類中定義與該方法具有相同方法名 相同返回值 相同形參列表的方法;
final修飾的方法只是不能被重寫,但可以被重載;
final修飾的類不能有子類,為了保證某個類不能被繼承,可以使用final修飾起來;
final關(guān)鍵字的具體使用
繼承關(guān)系的最大弊端就是破壞封裝;子類可以訪問父類的實現(xiàn)細節(jié)渐白,而且可以通過方法的覆蓋的形式修改實現(xiàn)細節(jié)尊浓;
final本身的含義為“最終的,不可變的”纯衍;可以修飾類栋齿、方法、變量托酸;構(gòu)造器不能使用final修飾褒颈;
final修飾的類:表示最終的類柒巫,不能再有子類励堡;
final修飾的類需要滿足以下條件:
1):某類不是專門為繼承設(shè)計的
2):處于安全考慮,類的實現(xiàn)細節(jié)不許變動
3):確信該類不會被拓展
final修飾的方法:稱為最終方法堡掏,該方法不能被子類覆蓋应结;
什么時候使用final修飾方法:
1):在父類中提供的統(tǒng)一算法,不準子類通過方法覆蓋來修改泉唁,此時使用final修飾鹅龄;
2):在構(gòu)造器中調(diào)用的方法(初始化方法),此時一般使用final修飾亭畜;
(final修飾的方法扮休,子類可以調(diào)用,但不可覆蓋)
final修飾的變量:最終的變量拴鸵,表示常量玷坠;該變量只能賦值一次,不能再賦值劲藐;
final是唯一可以修飾局部變量的修飾符八堡;
1):final變量必須顯示的指定初始值,因為系統(tǒng)不會為final字段初始化聘芜;
2):final變量一旦賦初始值兄渺,就不能重新賦值;
3):常量命名規(guī)范:單詞全部使用大寫字母汰现,如果是多個單詞組成挂谍,單詞之間使用下劃線隔開叔壤;
final修飾的引用類型變量表示的是該對象的引用地址不能改變,但是里面的內(nèi)容可以改變凳兵;