java中一个对象的初始化过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中一个对象的初始化过程相关的知识,希望对你有一定的参考价值。

// 对象初始化的过程

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中一个对象的初始化过程的主要内容,如果未能解决你的问题,请参考以下文章

java对象的初始化过程和创建对象的几种方式

解析Java类和对象的初始化过程

java基础_对象初始化过程

java创建对象的初始化过程

Java类与对象初始化的过程(一道经典的面试题)

java中关于对象初始化的问题