java中一個對象的初始化過程
阿新 • • 發佈:2017-12-08
關系 col 中一 show 父類 style 覆蓋 結果 pan
// 對象初始化的過程 class Fu { int num=55;// 1, num=0;對象中的成員變量默認初始化。5, 顯示初始化 num=55 { System.out.println("FU類構造代碼塊");// 6, 構造代碼塊初始化 } Fu() { // 3 FU類構造函函數初始化 super(); // 4 object構造函函數初始化 // 5 顯示初始化,初始化成員變量 // 6 構造代碼塊初始化類 System.out.println("FU構造函數"+num);// 7 ,num=55;show();// 8,被覆蓋運行子類 } void show() { System.out.println("FU SHOW "); } static { // -1,靜態代碼塊隨類的加載而加載,且只執行一次 先加載FU System.out.println("static FU"); } } class Zi extends Fu { int num=5; // 1, num=0;對象中的成員變量默認初始化. 10, 顯示初始化 num=5// 構造代碼塊 { System.out.println("zi構造代碼塊 " +num); // 11 構造代碼塊初始化 num=5 } // 構造函數 Zi() { // 2, 構造函數初始化 super(); //3 , // 10, 顯示初始化,初始化成員變量 // 11 構造代碼塊初始化類 System.out.println("zi構造函數"+num); // 12,num=5; } void show() { // 8 System.out.println("ZI SHOW "+num); // 9,num=0; } static { // 0, 再加載ZI System.out.println("static ZI"); } } class TestDemo { public static void main(String[] args) { // 對象初始化的過程 new Zi(); } }
// // 結果為: static FU
// static ZI
// FU類構造代碼塊
// FU構造函數55
// ZI SHOW 0
// zi構造代碼塊5
// zi構造函數5
// 總結:靜態代碼塊=>非靜態代碼塊=>構造方法
// 父子關系:父類靜態代碼塊=>子類靜態代碼塊=>父類非靜態代碼塊=>父類構造函數=>子類非靜態代碼塊=>子類構造函數
java中一個對象的初始化過程