1. 程式人生 > >java中一個對象的初始化過程

java中一個對象的初始化過程

關系 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中一個對象的初始化過程