類初始化順序:
1、首先是所有父類的static初始化,按代碼中出現的順序(意思是代碼塊和賦值語句),最后到子類的static的初始化,依然按代碼中出現的順序
2、其次是所有父類的非static初始化,按代碼中出現的順序(意思是代碼塊和賦值語句),然后執行父類的構造函數,最后到子類的非static的初始化,依然按代碼中出現的順序。
3、最后才是子類構造函數里面的內容。
4、如果構造里面出現super(...)或者this(...),那么是super(...)的話先到父類去,然后從1開始;如果是this(...)的話,那么先到this(...)所指的構造中去,然后默認執行super()(如果沒有super(...)的話),然后就從1開始(如果有static的話)。這里強調一點:static的代碼塊和賦值語句只執行一遍,比如 在main方法里面連續new 子類() 兩個,那么第二個new 子類()將直接從2開始初始化。
以上就是一個類初始化的順序!
在強調一點:
《1》static的初始化與是否new 構造無關,只要調用類.屬性,類.方法;類.屬性=、new 類()就會進行初始化并賦值
《2》非static的初始化僅僅只在new 構造
posted on 2012-06-13 21:52
朔望魔刃 閱讀(238)
評論(0) 編輯 收藏 所屬分類:
java