java 静态代码块 构造函数 父子类中的执行顺序

父类B代码如下:

public class B {

public B(){
System.out.println("父类B的构造函数");
}

static {
System.out.println("父类B的中的静态代码块");
}

{
System.out.println("父类B的中的非静态代码块 sya()");
}
}

子类A代码如下:

public class A extends B{
public A(){
System.out.println("子类A的构造函数");
}

static {
System.out.println("子类A的中的静态代码块");
}

{
System.out.println("子类A的中的非静态代码块 sya()1");
}

public static void main(String[] args) {
A a = new A();
System.out.println("A!");
A a2 = new A();
System.out.println("启动完成");
}
}

执行顺序如下:

父类B的中的静态代码块
子类A的中的静态代码块
父类B的中的非静态代码块 sya()
父类B的构造函数
子类A的中的非静态代码块 sya()1
子类A的构造函数
A!
父类B的中的非静态代码块 sya()
父类B的构造函数
子类A的中的非静态代码块 sya()1
子类A的构造函数
启动完成
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容