类继承中构造方法与static块调用顺序浅析

 首先,明确两点

1) 类中Static{}代码段会在该类第一次访问里被调用,并且仅被调用一次

2) 由于类中构造方法会默认地或显示的调用父类的构造方法,这样类在实例化时(即调用构造器方法),会优先调用构造器方法。

如下程序:

class Firework{
    static {
        System.out.println("Hello" );
    }
    public Firework () {
        System.out.println("Firework 0" );
    }
}

class Fountain extends Firework {
    static {
        System.out.println("World" );
    }
    public Fountain() {
        // TODO Auto-generated constructor stub
        System.out.println("Fountain 0" );
    }
}

现有一段代码如下:

Firework f = new Fountain();

 

运行输出为

Hello

World

Firework 0

Fountain 0

由输出可知Java对类中static块执行策略是:优先深度遍历所有类的static{}块,其次再遍历类的构造器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值