2009年12月22日 星期二

JAVA筆記-initializer實做區塊

{...}單獨放在class內是用來初始實做區塊
分為兩種instance initialize、static initialize

在instance initialize區塊,
編譯器會將其內部的程式碼複製到每個建構子中,
若原initialize區塊和instance initialize區塊中有定義相同的變數
則會以initialize的定義為主,
而該變數不會被instance initialize的定義覆蓋

至於static initialize則不會被複製到建構子中,會用來初始化靜態變數,
static initialize不能存取一般的instance物件變數,
但instance initialize是可存取static和non-static的成員變數

public class InitializerSample {
  String id;
  int birthday;
  String name;
  static int money;

  InitializerSample() {}
  InitializerSample(int kind) {}

  //instance initialize
  {
    id = "A123456789";
    birthday = 20050101;
    name = "pcschool";
  }

  //static initialize
  static {
    money = 10000;
  }
}

0 意見 :

張貼留言