当子类生成构造方法的时候,执行的顺序
2019-04-11 本文已影响0人
最困惑的时候就是能成长的时候
分别是父类的静态代码块,父类的非静态代码块,父类的对象,父类的构造方法。然后在子类中一样也有这四块
Father 类:
public class Father {
Dog dog = new Dog("父类的对象"); //父类对象
//静态代码块
static{
System.out.println("父类静态代码块");
}
//非静态代码块
{
System.out.println("父类非静态代码块");
}
//父类构造方法构造方法
public Father(){
System.out.println("父类构造方法构造方法");
}
}
Son类:
public class Son extends Father {
Dog dog = new Dog("子类的对象");
static{
System.out.println("子类的静态代码块");
}
{
System.out.println("子类的非静态代码块");
}
public Son() {
System.out.println("子类的构造器");
}
}
然后,我们执行Son的构造方法
image.pngnew Son();
所以先执行父类静态代码块,然后执行子类的静态代码块,然后执行父类的对象构造,执行父类的非静态代码块,执行父类构造方法,然后执行子类的对象,执行子类的非静态代码块,执行子类的构造器
总结:
1.先执行父类的静态代码块,
2.子类的静态代码块
3.父类的对象(已经初始化的引用类型)和非静态代码块(谁在前先执行谁)
4.父类的构造方法
5.子类的对象和非静态代码块
6.子类的构造方法