【Java】静态代码块、构造代码块、构造方法的执行顺序

文章目录

  • 1. 无继承关系
  • 2. 有继承关系

1. 无继承关系

优先级:静态代码块 > 构造代码块 > 构造方法

class A {
    static {
        System.out.println("A 静态代码块");
    }

    {
        System.out.println("A 构造代码块");
    }

    public A() {
        System.out.println("A 构造方法");
    }
}

public class Main {
    public static void main(String[] args) {
        new A();
    }
}

运行结果

【Java】静态代码块、构造代码块、构造方法的执行顺序_第1张图片

2. 有继承关系

优先级:父类静态代码块 > 子类静态代码块 > 父类构造代码块 > 父类构造方法 > 子类构造代码块 > 子类构造方法

class B extends A {
    static {
        System.out.println("B 静态代码块");
    }

    {
        System.out.println("B 构造代码块");
    }

    public B() {
        System.out.println("B 构造方法");
    }
}

public class Main {
    public static void main(String[] args) {
        new B();
    }
}

运行结果

【Java】静态代码块、构造代码块、构造方法的执行顺序_第2张图片

你可能感兴趣的:(Java,SE,java,开发语言)