Java基础----你真的了解java类创建顺序吗?

public class HelloParent {
helloY y = new helloY();
static {
System.out.println(“parent static block”);
}
HelloParent() {
System.out.println(“parent construct”);
}
}

class HelloChild extends HelloParent {
helloY y = new helloY ();
static {
System.out.println(“child static block”);
}
HelloChild() {
System.out.println(“child construct”);
}

public static void main(String[] args) {
    new HelloChild();
}

}

class helloY {
helloY () {
System.out.println(“this is Y”);
}
}
如上图所示,各位看官猜猜输出顺序是怎么样的?这里只能做一个总结:
输出顺序:先父类的静态代码块—>子类的静态代码块—>父类的成员变量初始化—>
父类的构造方法—->子类的成员变量初始化—>子类的构造方法。经过机试也是没有问题的。结果如下:
parent static block
child static block
this is Y
parent construct
this is Y
child construct

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值