new B()
- 第一次用到 A 和 B 类
1. 加载父类,为父类的静态变量分配内存
2. 加载子类,为子类的静态变量分配内存
3. 执行父类静态变量赋值运算,和静态初始化块
4. 执行子类静态变量赋值运算,和静态初始化块
- 创建实例
5. 创建父类实例,为父类的实例变量分配内存
6. 创建子类实例,为子类的实例变量分配内存
7. 执行父类实例变量的赋值运算
8. 执行父类的构造方法
9. 执行子类实例变量的赋值运算
10. 执行子类的构造方法
-
public class Test1 { public static void main(String[] args) { * new B(); System.out.println("-----------------"); * new B(); } } class A{ * int v1 = 1;//5.v1分配内存; 7.赋值 * static int v2 = 2;//1.v2分配内存; 3.赋值 static{ * System.out.println("A静态块");//3.父类静态块 } A(){ * System.out.println("A构造");//8.父类构造 } } class B extends A{ * int v3 = 3;//6.v3分配内存; 9.赋值 * static int v4 = 4;//2.v4分配内存; 4.赋值 static{ * System.out.println("B静态块"); } B(){ * System.out.println("B构造"); } }// * 表示加断点执行