類的組合以及類的初始化順序

2021-08-09 23:12:33 字數 1253 閱讀 1659

類的組合:乙個類產生的物件是另乙個類的成員變數。

類的初始化順序:

1.static成員變數預設初始化           

2.靜態塊初始化

3.例項成員變數預設初始化

4.例項塊初始化

5.建構函式

1和2,3和4 與 **順序相關 但是 3,4不會出現在1,2之前

測試一:在person的建構函式中對data初始化

class data

public

data(int y,int m,int d)

}class person

public

person()

}public

class test

}

執行結果:

person 靜態初始化塊

person 例項初始化塊

person 建構函式

data 靜態初始化塊

data 例項初始化塊

data 建構函式

測試二:data作為person的例項成員變數初始化

class data

public

data(int y,int m,int d)

}class person

public

person()

}public

class test

}

執行結果:

person 靜態初始化塊

data 靜態初始化塊

data 例項初始化塊

data 建構函式

person 例項初始化塊

person 建構函式

測試三:data作為person的靜態成員變數初始化

class data

public

data(int y,int m,int d)

}class person

public

person()

}public

class test

}

執行結果:

data 靜態初始化塊

data 例項初始化塊

data 建構函式

person 靜態初始化塊

person 例項初始化塊

person 建構函式

類的初始化順序

寫了這麼多類 還沒仔細考慮過初始化順序 今天特意看了點這方面的知識 照著寫了個例子 初始化順序是 靜態變數 靜態初始化快 變數 初始化塊 建構函式 例子如下 public class classinitorder public classinitorder public static void ma...

類的初始化順序

不含繼承關係的類的初始化 類的靜態屬性 自上而下 類的靜態構造方法 類的非靜態屬性 類的非靜態構造方法 含有繼承關係的子類的初始化 一般的初始化過程 子類的靜態屬性 子類的靜態構造方法 子類的非靜態屬性 父類的靜態屬性 父類的靜態構造方法 父類的非靜態屬性 父類的非靜態構造方法 子類的非靜態構造方法...

類的初始化順序

建立乙個物件的執行順序如下 不存在父類 靜態成員顯示初始化 靜態 塊 main函式 如果存在main函式的話 成員變數初始化 初始化 塊 建構函式 其中1 與2 以及4 與5 的順序可以相反,初始化順序按照 的先後順序執行,但是變數還是在最先定義的,但是該變數必須是基本變數,並且在 靜態 初始化 塊...