静态代码的执行顺序

静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。

   

父类的静态代码块  2 子类的静态代码块  3 父类的构造函数  4 子类的构造函数

   

需要注意的地方:

   

子类的  构造函数  默认是  调用  父类的  无参构造函数。

   

如果  父类没有无参构造函数,则子类构造函数必须显式调用父类的构造函数。

如父类public Parent(String name){}

此时,子类中应该是这样调用public Child(String str){super(str);}

如父类public Parent()无参型的

此时,子类中应该这样调用public Child(String str){super();//也可以不写,默认的就是会调用super();}

   

一个例子:

Java代码  

 public class Parent {

    static String name = "hello";

    {

        System.out.println("parent block");

    }

    static {

        System.out.println("parent static block");

    }

 

    public Parent() {

        System.out.println("parent constructor");

    }

}

Java代码  

 class Child extends Parent {

    static String childName = "hello";

    {

        System.out.println("child block");

    }

    static {

        System.out.println("child static block");

    }

 

    public Child() {

        System.out.println("child constructor");

    }

}

Java代码  

public class StaticIniBlockOrderTest {

    public static void main(String[] args) {

        new Child();

        System.out.println("==============");

        new Child();

    }

} 

执行结果为:

   

parent static block

child static block

parent block

parent constructor

child block

child constructor

==============

parent block

parent constructor

child block

child constructor


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值