// 对象初始化的过程 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
// 总结:静态代码块=>非静态代码块=>构造方法
// 父子关系:父类静态代码块=>子类静态代码块=>父类非静态代码块=>父类构造函数=>子类非静态代码块=>子类构造函数
时间: 2024-11-04 19:11:22