1• 分配成员变量的存储空间并进行默认的初始化,就是用new关键字产生对象后,新的对象在heap中分配空间
2• 绑定构造函数参数,就是new Person(实际参数列表)中所传递进的参数赋值给构造方法中的形式参数变量;
3• 如有this()调用,则调用相应的重载构造方法,被调用的重载构造方法的执行流程结束后,回到当前构造方法,当前构造方法直接跳转到步骤6执行;
4• 显示或隐式追搠调用父类的构造方法,父类的构造方法又从步骤2开始对父类执行这些流程,父类的构造方法的执行流程结束后,回到当前构造方法,当前构造方法继续往下执行;
5• 进行实例变量的显式初始化操作,也就是执行在定义成员变量时就对其进行赋值的语句;
6• 执行当前构造方法的方法体中的程序代码。
例子:
class Base {
int i = 10;
{
System.out.println("Base:"+i);
}
Base(int x){
System.out.println("Enter Base Constructor " + i);
x();
System.out.println("After Base Constructor " + i);
}
void x(){
System.out.println("Base f "+i);
}
}
public class TestCsdn extends Base{
int i = 30;
{System.out.println(i);}
public TestCsdn() {
super(1);//运行完了构造方法后再进行自身的初始化赋值和方法的调用执行
System.out.println("After TestCsdn super() " + i);
}
void x(){
System.out.println("BSub f "+ i);
}
public static void main(String[] args){
TestCsdn a = new TestCsdn();
System.out.println("After new TestCsdn() " + a.i);
}
}
从运行结果上可以看到执行的顺序:
Base:10
Enter Base Constructor 10
this.i 0
BSub f 0
After Base Constructor 10
30
After TestCsdn super() 30
After new TestCsdn() 30
Program exited with status 0.
子类对象的实例化过程
最新推荐文章于 2021-07-17 21:59:21 发布
博客介绍了构造方法的执行流程,包括分配成员变量存储空间并初始化、绑定构造函数参数、调用重载构造方法、追溯调用父类构造方法、实例变量显式初始化以及执行构造方法体代码,还给出了相应的代码示例及运行结果。
888

被折叠的 条评论
为什么被折叠?



