java中init方法與clinit方法?

clinit:在Java編譯以後會在字節碼文件中生成<clinit>方法,成爲類構造器,包括靜態變量初始化和靜態塊的執行。收斂到clinit,收斂順序爲(父類的先執行):函數

  1. 父類靜態變量初始化   
  2. 父類靜態語句塊   
  3. 子類靜態變量初始化 
  4. 子類靜態語句塊

若父類爲接口,則不會調用父類的clinit方法,所以一個類能夠沒有clinit方法接口

init:在Java編譯以後會在字節碼文件中生成<init>方法,成爲實例構造器。該實例構造器會將語句塊,變量初始化,調用父類的構造器等操做收斂到init方法,收斂順序:it

  1. 父類變量初始化     
  2. 父類語句塊 
  3. 父類構造函數 
  4. 子類變量初始化   
  5. 子類語句塊 
  6. 子類構造函數 

clinit在類加載過程當中執行,init在實例化過程當中執行,clinit先於init執行。編譯

相關文章
相關標籤/搜索