子类对象的创建过程

2019.4.21 第一次写博客。
简单说一说子类创建对象的时候,子类和其父类的创建过程。

如下所示:
class A{
int v1=1;
static int v2=2;
static{}
public A(){}
}

class B extends A{
int v3=3;
static int v4=4;
static{}
public B(){}
}

一:第一次使用类A,类B时
//执行顺序
new B();
1.加载父类,为父类的静态变量分配内存。
2.加载子类,为子类的静态变量分配内存。
3.执行父类静态变量的赋值运算和父类的静态初始化块。
4.执行子类静态变量的赋值运算和子类的静态初始化块。
//静态变量和静态初始化块的执行顺序是按代码中静态变量和初始化块的先后顺序来执行
5.创建父类对象,为父类非静态变量分配内存。
6.创建子类对象,为子类非静态变量分配内存。
7.执行父类非静态变量的赋值运算。
8.执行父类的构造方法。
9.执行子类非静态变量的赋值运算。
10.执行子类的构造方法。

二:不是第一次使用类A,类B时
不执行子类和父类静态变量和静态初始化块,只执行之后的过程。

你可能感兴趣的:(子类对象的创建过程)