Java的new操作的时候做的事情
- 加载父类:
- 加载父类的类文件,如果父类还没有加载,会先加载父类。
- 初始化父类的静态成员和静态代码块:
- 父类的静态成员和静态代码块按照在类中的顺序进行初始化。
- 加载子类:
- 加载子类的类文件,如果子类还没有加载,会先加载子类。
- 初始化子类的静态成员和静态代码块:
- 子类的静态成员和静态代码块按照在类中的顺序进行初始化。
- 初始化父类的实例成员和实例代码块(在父类构造器之前):
- 父类的实例成员和实例代码块按照在类中的顺序进行初始化,且在父类的构造器之前执行。
- 调用父类的构造器:
- 执行父类的构造器。
- 初始化子类的实例成员和实例代码块(在子类构造器之前):
- 子类的实例成员和实例代码块按照在类中的顺序进行初始化,且在子类的构造器之前执行。
- 调用子类的构造器:
-
执行子类的构造器。
父类文件 父类的静态成员和静态代码块
子类文件 子类的静态成员和静态代码块
(到这一步时就已经完成父类和子类的初始化工作,接下来开始进行对象的创建了)
初始化父类对象的成员属性(就是给对象的成员属性赋初始值,如:int类型默认值为0)和实例代码块(类中的 {} 代码块 )
父类的构造器
初始化子类对象的成员属性和实例代码块
子类的构造器
废话短说