Java初始化顺序

来源:互联网 发布:java 线程 sleep 编辑:程序博客网 时间:2024/06/06 14:01
class A{    static{        System.out.println("Static A");    }    {        System.out.println("Constructed code A");    }    A(){        System.out.println("Constructer A");    }}class B extends A{    static{        System.out.println("Static B");    }    {        System.out.println("Constructed Code B");    }    B(){        System.out.println("Constructer B");    }}class C extends B{    static{        System.out.println("Static C");    }    {        System.out.println("Constructed Code C");    }    C(){        System.out.println("Constructer C");    }}public class llll {    public static void main(String[] args) {//      new A();//      new B();        new C();    }}

程序输出:Static AStatic BStatic CConstructed code AConstructer AConstructed Code BConstructer BConstructed Code CConstructer C

总结:    1、静态代码块在首次加载时从超类到当前加载类依次执行,    2、构造函数从超类到当前类依次执行    3、构造代码块在功能上相当于将代码块添加在每一个构造函数首行  

其他:    创建对象时(new)必须调用父类构造器,默认调用无参构造器    若父类无无参构造器,则必须使用super(...)显示调用父类帯参构造器

0 0
原创粉丝点击