public class Test2 extends Test1 {
??? {
??????? System.out.print("1");
??? }
??? Test2() {
??????? System.out.print("2");
??? }
??? static {
??????? System.out.print("3");
??? }
??? {
??????? System.out.print("4");
??? }
??? public static void main(String[] args) {
??????? new Test2();
??? }
}
class Test1 {
??? {
??????? System.out.print("7");
??? }
??? Test1() {
??????? System.out.print("5");
??? }
??? static {
??????? System.out.print("6");
??? }
}
程序執行結果:6375142
調用順序:
1、先對類進行加載:初始化靜態變量,先初始化父類的靜態變量,然后才是子類的靜態變量;
2、對類進行初始化:在子類初始化以前,先進行父類的初始化,以及父類構造器的調用;
3、最后初始化子類,調用子類構造方法;
在中文TIJ中,曾經說道父類的構造方法在子類的構造方法之前執行,這樣說雖然不是錯誤的,但是是不
完善的,應該是父類的構造方法在子類初始化之前就已經執行了。
posted on 2007-02-23 13:23
魚飛揚 閱讀(105)
評論(0) 編輯 收藏 所屬分類:
Java