當乙個物件被建立時,初始化是按照一下順序完成的:
[list]
[1]設定成員的值為預設的初始化值(0,false,null)。
[2]呼叫物件的構造方法(但是還沒有執行構造方法體)。
[3]呼叫父類的構造方法。
[4]使用初始化程式和初始塊初始化成員。
[5]執行構造方法體。
[/list]
貼兩段**,如果這兩段**想通了,物件初始化就沒有問題了。
class a
}class b extends a
}public class demo1
}
class a
}class b extends a
}public class demo2
}
慢慢想吧!執行出的結果和你想的一樣,那恭喜你了
這還沒有完,這個只是預設的情況,你還遇到過,[quote]super,this[/quote]關鍵字吧!
它們兩兄弟又是另一碼事了。
this指向本類,super指向超類,它們在建構函式中是如何使用的呢?
this用法,自己給自己貼段**下來好理解一些,
public class demothis
demothis()
public static void main(string args)
}
這樣就好理解了,但是要注意的是:
[quote]在構造器重,如果要使用關鍵字this的話,那麼必須放在構造器的第一行,如果不這樣將會導致編譯錯誤[/quote]
super用法和this 差不多一樣,就是指向父類,其餘都差不多的。
[quote="自勉"]這些都是基礎的基礎,自己記錄下來,自己提醒自己。[/quote]
java初始化順序
1 父類靜態成員和靜態初始化塊 按在 中出現的順序依次執行 2 子類靜態成員和靜態初始化塊 按在 中出現的順序依次執行 3 父類例項成員和例項初始化塊 按在 中出現的順序依次執行 4 父類構造方法 5 子類例項成員和例項初始化塊 按在 中出現的順序依次執行 6 子類構造方法 public abstr...
java初始化順序
例如以下 package chapter5 public class demo1one public void printinfo public static void main string args 程式一開始先執行 private static string password 0721 這行 ...
JAVA初始化順序
1 當使用新建物件例項或者呼叫靜態成員變數或者方法時,初始化靜態變數 2 靜態變數在初始化時在前面的先初始化,靜態塊和靜態變數相同對待 在初始化過程中,有新建物件例項的時候,暫時停止後面的靜態變數初始化 3 靜態變數沒有初始化時,使用預設的初始值 如int為0 4 新建物件例項,對非靜態的成員變數進...