欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

由此我们可以发现,调用子类的有参构造函数,会先执行其父类的无参构造函数,又因静态代码块最先执行,则,执行顺序分别是:

父类静态代码块 -->> 子类静态代码块  -->> 父类无参构造函数 -->>  子类有参构造