java錯題筆記

玫瑰彩虹糖發表於2017-07-30
final、finally、finalize
1. final是關鍵字,final可以修飾類、方法、屬性。
    如果一個類被final修飾,那麼這個類就是最終類,不能派生出新的子類,不能作為父類被繼承,該類中的所有方法都不能被重寫,但是final類中的成員變數是可以改變的,要想final類中的成員變數的不可以改變,必須給成員變數新增final修飾。因此,一個類不能同時被final和abstract修飾,這兩個關鍵字相互矛盾。
    如果final修飾方法,那麼這個方法是最終方法,不允許任何子類重寫該方法,但子類仍可以使用該方法,注意:final引數用來表示這個引數在這個函式內部不允許被修改。
    final修飾屬性,被final修飾的變數不可變。這裡的不可變有兩重含義:引用不可變和物件不可變。final指的是引用不可變,即它只能指向初始化時指向的那個物件,而不關心指向物件內容的變化。因此,被final修飾的變數必須初始化,該變數其實就是常量。
2. finally作為異常處理的一部分,只能用在try/catch語句快中,finally程式碼塊中的語句一定會被執行,經常被用來釋放資源,如IO流和資料庫資源的釋放。
3. finalize是Object類的一個方法,該方法在Object類中宣告:
        protected void finalize() throws Throwable { } 
    在垃圾回收器執行時會呼叫被回收物件的finalize()方法,可以覆蓋此方法來實現對其資源的回收。注意:一旦垃圾回收器準備釋放某個物件佔用的空間,將首先調該物件的
finalize()方法,並且在下一次垃圾回收動作發生時,才真正將該物件佔用的記憶體回收。


相關文章