初始化塊的執行順序

2021-09-20 02:47:22 字數 593 閱讀 1977

單個類中初始化塊、靜態初始化塊、構造器的執行順序。

無論怎麼寫,先執行第乙個的是靜態初始化塊,第二個是初始化塊,第三個是構造器,如果寫了多個的時候從上往下執行,比如寫了多個初始化塊,在類裡面是從上往下執行的。

在繼承中也會執行以上的順序,先執行父類的靜態初始化塊,再執行子類的靜態初始化塊,先執行父類的初始化塊和構造器,再執行子類的初始化塊和構造器。

例子 :

先寫第乙個類的初始化塊

public class one 

static

}

再寫第二個類的初始化塊,可繼承第乙個類

public class two extends one 

static

}

也可以寫多個相繼承

再寫乙個主函式的入口,建立並例項出來 :

public class demo 

}

呈現的結果 :

第一靜態初始化塊

第二靜態初始化塊

第一初始化塊

第一構造器

第二初始化塊

第二構造器

初始化塊和靜態初始化塊

初始化塊的使用 變數,靜態變數,方法,靜態方法 由圖可知變數沒問題 上面的方法不可行能否初始化靜態方法 嘗試使用初始化塊初始化構造方法 最後比較一下構造方法初始化,初始化塊初始化,靜態初始化塊初始化當中誰最先被初始化 package staticinitializelump public class...

InitOrder初始化執行順序

目錄總結 包的引用,函式執行順序 go algorithm 根目錄 a a.go b b.go main.go a.gopackage a import fmt func init func a1 func a2 b.gopackage b import fmt go algorithm a fun...

初始化塊和構造器的執行順序問題

一 初始化塊和構造器的執行順序問題一般性規定 1 初始化塊總在構造器之前執行,初始化塊不能接受形參。2 用static修飾的初始化塊為靜態初始化塊,由於是靜態的,所以是屬於類,當類載入時,就執行靜態初始化塊,但執行乙個子類時,最先執行其頂層父類的靜態初始化。3 如果初始化塊是屬於例項的,只要建立一次...