2018-05-02html
爲何須要final修飾符?java
繼承關係最大的弊端就是破壞封裝:子類能夠訪問父類的實現細節,並且能夠經過方法覆蓋的形式修改細節。面試
---------------------------------------------------------------------------------------------------算法
多個修飾符之間是沒有前後關係的。 public static final /public final static /final static public 這些寫法都正確。設計模式
-------------------------------------------------------------------------------------------------------------------安全
final自己的含義就是最終的,不可改變的。spa
final能夠修飾非抽象類、非抽象方法和變量。注意:構造方法不能被final修飾,由於構造方法不能被繼承(構造方法名必須與類名相同,因此沒法被繼承),所以構造方法自己就是最終的線程
final書本定義:設計
1.final能夠修飾變量,被final修飾的變量被賦初值後,不能對它從新賦值htm
2.final能夠修飾方法,被final修飾的方法被重寫
3.final能夠修飾類,被final修飾的類不能派生子類
總的來講,就是值不能改,方法不能重寫,類不能繼承,就至關因而終結版。
-----------------------------------------------------------------------------------------------
1、final修飾的變量:最終的變量即表示常量,該變量只能賦值一次,不能再次賦值
特色:
一、 final變量必須顯示指定初始值,系統不會爲final字段初始化.
且只能以如下三種方式進行初始化:
1)定義時初始化
2)在非靜態初始化塊中爲final實例變量指定初始值
3)在構造器中指定初始值
二、 final變量一旦賦予初始值,就不能被從新賦值.
三、常量名規範:常量名稱符合標識符,單詞所有使用大寫。若是由多個單詞組成,單詞間使用下劃線隔開。例如:final int MAX_VALUE = 6;
全局靜態變量:使用 public,static, final 同時修飾的變量。直接使用類名調用便可。
-------------------------------------------------------------------------------
面試題:final修飾引用類型的常量究竟是表示該變量的引用的地址不能改變仍是引用地址裏的內容不能改變?
final修飾基本類型的變量:表示該變量的值不能改變,即不能用" = "號從新賦值
final修飾引用類型的常量:表示該變量的引用的地址不能改變,而不是引用地址裏的內容不能改變
-----------------------------------------------------------------------------------------
final是惟一能夠修飾局部變量的修飾符
局部內部類只能訪問final修飾的局部變量
-------------------------------------
何時使用常量?
當在程序中,多個地方須要使用到共同的數據,且該數據不會改變,此時咱們專門定義全局變量。
通常在開發中,咱們會定義一個常量類,專門用來存儲數據。
----------------------------------------------------------------------------------------------------------------------------
2、final修飾的方法:最終的方法,該方法不能被子類覆蓋.
何時方法須要使用final修飾?
1):在父類中提供的同一的算法骨架,不許子類經過方法覆蓋來修改,此時用final修飾.模板方法設計模式
2):在構造器中調用的方法(初始化方法),此時通常使用final.修飾
注意:fina修飾的方法,子類能夠調用,可是不能覆蓋,
------------------------------------------------------------------------------------------------------------------------------
3、final修飾的類:表示最終的類,該類不能再有子類
只要知足下列條件之一就能夠把一個類設計成final類
1)本類不是專門爲繼承而設計
2)出於安全考慮,類的實現細節不容許改動
3)該類不會被拓展
面試題:列舉5個Java中內置的使用final修飾的類
java裏final修飾的類有不少,八大基本數據類型類和String類.
參考:http://www.javashuo.com/article/p-mlqymwhv-dv.html
-------------------------------------------------------------------------------
4、單例設計模式
什麼是單例設計模式?
設計模式(Design pattern)是一套被反覆使用、多數人知曉的、通過分類編目的、代碼設計經驗的總結。使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使代碼編制真正工程化,設計模式是軟件工程的基石,如同大廈的一塊塊磚石同樣。項目中合理的運用設計模式能夠完美的解決不少問題,每種模式在如今中都有相應的原理來與之對應,每個模式描述了一個在咱們周圍不斷重複發生的問題,以及該問題的核心解決方案,這也是它能被普遍應用的緣由。
單例模式的步驟:
第一種:懶漢式,線程不安全
一、必須在該類中,先本身建立一個對象。
二、私有化自身的構造器,防止外界經過構造器創造出新的對象。
三、向外暴露一個公共的靜態方法,用於獲取自身的對象。