Java的初始化顺序

import static net.mindview.util.Print.*;

class Insect{
    private int i = 9;
    protected int j;
    Insect(){
        print("i = " + i + ", j = " + j);   // System.out.println()
        j = 39;
    }
    private static int x1 = printInit("static Insct.x1 initialized");
    static int printInit(String s) {
        print(s);
        return 47;
    }
}

public class Bettle extends Insect{
    private int k = printInit("Bettle.k initialized");
    public Bettle(){
        print("k = " + k);
        print("j = " + j);
    }
    private static int x2 = printInit("static Bettle.x2 initialized");
    public static void main(String[] args){
        print("Beetle constructor");
        Bettle b= new Bettle();
    }
}

结果如下:
这里写图片描述
1. 由于调用static main,因此Bettle会被加载。
2. 由于Bettle是继承Insect类的,所以Insect类会被加载。
3. 由于一开始没有创建对象,因此只会初始化静态变量,从父类到子类。
4. 当创建对象b的时候,根据继承,会先初始化父类,从成员变量到构造函数,static成员只会初始化一次,之前被初始化了,因此现在不会初始化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值