Java类(继承)初始化顺序

/**
 * Created by xfyou on 2016/11/2.
 * Java继承的初始化
 */
public class Beetle extends Insect {
    int k = prt("Beetle.k initialized");

    public Beetle() {
        prt("k = " + k);
        prt("j = " + j);
    }

    static int x2 = prt("static Beetle.x2 initialized");

    static int prt(String s) {
        System.out.println(s);
        return 63;
    }

    public static void main(String[] args) {
        prt("Beetle constructor");
        Beetle b = new Beetle();
    }
}

class Insect {
    int i = 9;
    int j;

    public Insect() {
        prt("i = " + i + ", j = " + j);
        j = 39;
    }

    static int x1 = prt("static Insect.x1 initialized");

    static int prt(String s) {
        System.out.println(s);
        return 47;
    }
}

执行结果如下:

static Insect.x1 initialized

static Beetle.x2 initialized

Beetle constructor

i = 9, j = 0

Beetle.k initialized

k = 63

j = 39

执行顺序总结:

1、父类静态字段

2、父类静态初始化块

3、子类静态字段

4、子类静态初始化块

5、父类实例字段

6、父类实例初始化块

7、父类构造器

8、子类实例字段

9、子类实例初始化块

10、子类构造器

 

没有继承的单个类的初始化顺序为:

  • 静态字段
  • 静态初始化块
  • 实例字段
  • 实例初始化块
  • 构造器

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值