一提到java中的final就想到常量、不可變,當博主看到《Thinking in Java》中對final的講解後有些領悟,現記錄一下:java
1)final數據對象
一個永不改變的編譯時常量,一個在運行時被初始化的值,而且不可改變,一個既是static又是fianl的域只佔據一段不能改變的存儲空間。注意對於對象的引用,final是指這個引用不可改變,而非改對象不可改變。繼承
2)空白final編譯
所謂空白final是指被聲明爲final但又沒有初始值得域。java是容許聲明的,可是該final在使用前必須被初始化。引用
3)final參數方法
Java容許在參數列表找那個聲明參數爲final形式,這也意味着你沒法改變參數所引用的對象數據
4)final方法static
使用final方法是把方法鎖定,防止任何繼承類修改它,即該方法不會被覆蓋。參數
5)final和private
類中全部的private方法都隱式的指定爲final的(private方法沒法被覆蓋,因此private 添加final是多餘的 )
6)final類
final類禁止繼承,因此final類中全部的方法都隱式的指定爲fianl的(沒法覆蓋它)。