Java 的静态初始化块的调用顺序 先父类后子类

最近面试,被问到一道题,父类和子类都有静态初始化块代码,
其中包含输出语句,先执行哪个。

因为从代码维护的角度,我一般只是在初始化静态容器数据时,使用static块,
所以并不是很清楚,直观的认为是先父类,后子类。

面试官说,父类的不会被执行。

心下存怀疑

回来写代码一试,果然如我所想。

可能面试官是在用spring容器时,又想用 static初始化块。
但是Spring中类的生存周期和bean的周期有很大间隔,可能漏看了……
代码如下

public class Aclass {
protected static Map<String, String> data;
static {
data = new HashMap<String, String>();
data.put("adfdasf","sdfadsf");
System.out.println("aclass");
}
}

public class BClass extends Aclass {
static Map<String, String> map;
static {
map = new HashMap<String, String>();
map.put("sdf","hhaha");
System.out.println("bclass");
}

public static void main(String[] args) {
BClass b = new BClass();
}
}

输出结果是
aclass
bclass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值