java 初始化欄位(翻譯自Java Tutorials)

來源:互聯網
上載者:User

原文出自  http://www.cnblogs.com/ggjucheng/archive/2012/11/30/2796666.html

正如你看到的,我們經常在欄位的聲明中提供一個初始化值:

public class BedAndBreakfast {    // initialize to 10    public static int capacity = 10;    // initialize to false    private boolean full = false;}

當初始化的值是可用的,初始化語句也放在一行,上面的代碼就可以工作。但是這種形式的初始化由於比較簡單,所以有一些限制。如果初始化需要一些邏輯處理(例如,錯誤處理或者是通過迴圈填充一個複雜的數組),簡單的賦值是不足的。執行個體變數可以在構造方法初始化,並做錯誤處理和邏輯處理。為了給類變數提供一樣的功能,java程式語言套件含了靜態初始塊。

注意:儘管在類聲明的開始時,聲明欄位是最常用的實踐,但是它非必須。只有它在使用前必須聲明和初始化才是必須的。

 

靜態初始塊

一個靜態初始化代碼塊,就像平常的代碼塊,使用大括弧{}閉合,前面有一個static關鍵字,這裡是例子:

static {    // whatever code is needed for initialization goes here}

一個類可以有任意數量的靜態初始塊,並可以出現在類體的任意位置。運行系統保證靜態初始塊的調用順序和在原始碼的出現順序是一致的。

 

這裡是一個替代代碼塊的方法—可以寫一個私人的static方法:

class Whatever {    public static varType myVar = initializeClassVariable();            private static varType initializeClassVariable() {        // initialization code goes here    }}

私人static方法的優點是,它可以在你需要重新初始設定變數時被重用。

 

執行個體化執行個體成員

一般來說,你會把變數的初始化代碼放在構造方法裡。這裡有兩個可選的使用構造方法初始化執行個體變數的方法:初始化代碼塊和final方法。

執行個體變數的初始化代碼塊和static初始化代碼塊差不多,但是沒有static關鍵字:

{    // whatever code is needed for initialization goes here}

java編譯器會把初始化代碼塊拷貝到每個構造方法。所以,這種方式可以用來在多個構造方法中共用代碼塊。

一個final方法不能被子類覆蓋。這個會在介面和繼承的章節討論。這裡有一個例子,使用final方法初始化執行個體變數:

class Whatever {    private varType myVar = initializeInstanceVariable();            protected final varType initializeInstanceVariable() {        // initialization code goes here    }}

如果子類要重用初始化代碼,這是特別有用的。初始化代碼設定為final,這個是因為在執行個體初始化時,調用非final方法會造成問題。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.