Java中的init方法與clinit方法?

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

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

所謂收斂到<init>方法中的意思是:將這些操做放入到<init>中去執行。對象

  1. java在編譯以後會在字節碼文件中生成<clinit>方法,稱之爲類構造器,類構造器同實例構造器同樣,也會將靜態語句塊、靜態變量初始化,收斂到<clinit>方法中,收斂順序爲 1.父類靜態變量初始化 2.父類靜態語句塊 3.子類靜態變量初始化 4.子類靜態語句塊。  若父類爲接口,則不會調用父類的clinit方法。一個類能夠沒有clinit方法。

   <clinit>方法是在類加載過程當中執行的,而<init>是在對象實例化執行的,因此<clinit>必定比<init>先執行。因此整個順序爲: 1.父類靜態變量初始化 2.父類靜態語句塊 3.子類靜態變量初始化 4.子類靜態語句塊 5.父類變量初始化塊 6.父類語句塊  7.父類構造函數 8.子類變量初始化塊  9.子類語句塊  10.子類構造函數接口

相關文章
相關標籤/搜索