static加继承在创建对象时的执行顺序的问题

本文探讨了Java中带有static关键字的属性在继承关系中的初始化顺序。在加载子类时,首先执行父类的static实例域,接着是子类的static初始化,随后才进行子类构造函数的调用,包括父类的无参构造方法。子类的初始化块执行在父类构造方法之后,这是因为子类的实例域需要在父类实例域之后定义。
摘要由CSDN通过智能技术生成

Java中类内带static关键字属性的初始化顺序一文中,我们已经明白了带有static关键字的实例域会在加载类的时候执行所有static语句,比如实例域和静态块.那么如果对于一个有继承关系的类,并且结合static关键字,它的代码执行顺序又会是怎么样的呢?

话不多说,直接上代码:

People.java

public class People {
    private String name;
    private static People people = new People();
    private static int n = 10;
    private int age = setAge();
    {
        System.out.println("初始化块");
        System.out.println("age = " + age);
    }
    static {
        System.out.println("静态块");
        System.out.println("n = " + n);
    }
    public static int setAge() {
        return n++;
    }
    public People() {
        System.out.println("默认构造函数");
        System.out.println("age:" + age);
    }
    public People(String
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值