java中静态块、main方法、构造块、构造方法的执行顺序复习

写此文的目的是复习java中静态块、main方法、构造块、构造方法的执行顺序,直接运行下面的代码即可一目了然,不再多说。

/**
 * 运行父类main方法各个块作用域的执行顺序:
 * static块(且仅仅执行一次) -> main方法 -> 构造块 -> 构造方法
 */
public class Parent {

    private int age = 0;
    private String name = null;
    private static String company = null;

    static {
        System.out.println("Parent static block runing");
        company = "parent-ahik";
    }

    {
        System.out.println("Parent constructor block runing");
        this.name = "parent";
    }

    public Parent() {
        System.out.println("Parent construct method Parent() runing");
        this.age = 28;
    }

    public Parent(int age) {
        System.out.println("Parent construct method Parent(int age) runing");
        this.age = age;
    }

    @Override
    public String toString() {
        return "Parent{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", company= '" + company + "' " +
                '}';
    }

    public static void main(String... args) {
        System.out.println("Parent main runing");
        Parent p1 = new Parent();
        System.out.println(p1);
        Parent p2 = new Parent(33);
        System.out.println(p2);

        {
            int i = 100;
            System.out.println(i);
        }

        int i = 99;
        System.out.println(i);
    }

}


//////////////////////////////////////////////////////////////


/**
 * 运行子类main方法各个块作用域的执行顺序:
 * 父类static块(且仅仅执行一次)->
 * 子类static块且仅仅执行一次) ->
 * 子类 main方法 ->
 * 父类构造块 ->
 * 父类构造构造方法 ->
 * 子类构造块 ->
 * 子类构造方法
 */
public class Child extends Parent {

    private int age = 0;
    private String name = null;
    private static String company = null;

    static {
        System.out.println("Child static block runing");
        company = "child-ahik";
    }

    {
        this.name = "Child";
        System.out.println("Child construct block start runing");
    }

    public Child() {
        super(66);
        this.age = 99;
        System.out.println("Child construct method Child() runing");
    }

    public Child(int age) {
        super(77);
        this.age = age;
        System.out.println("Child construct method Child(int age) runing");
    }

    public static void main(String... args) {
        System.out.println("Child main runing");
        Child c1 = new Child();
        System.out.println(c1);
        Child c2 = new Child(100);
        System.out.println(c2);
    }

}




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值