java继承构造函数调用顺序问题
程序员文章站
2022-03-03 08:52:53
...
有两个类,一个Yuan继承Yan,调用Yuan的有参的构造函数,其调用顺序如何,且看代码:
package cn.yan.teststarter.test;
public class Yan {
private String name;
static {
System.out.println(8);
}
public Yan() {
System.out.println(1);
}
public Yan(String name) {
this.name = name;
System.out.println(2);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package cn.yan.teststarter.test;
public class Yuan extends Yan {
private String name;
static {
System.out.println(9);
}
public Yuan() {
System.out.println(3);
}
public Yuan(String name) {
this.name = name;
System.out.println(4);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public static void main(String[] args) {
new Yuan("li");
}
最终其执行结果为:
8
9
1
4
由此我们可以发现,调用子类的有参构造函数,会先执行其父类的无参构造函数,又因静态代码块最先执行,则,执行顺序分别是:
父类静态代码块 -->> 子类静态代码块 -->> 父类无参构造函数 -->> 子类有参构造
上一篇: C++继承,构造子类对象时,需要调用父类的构造函数
下一篇: 继承时的构造函数