Java 运行的顺序

来源:互联网 发布:淘宝商品的详情页 编辑:程序博客网 时间:2024/05/18 13:28

实例化类的顺序:   1. 静态块 2. 父类构造器 3. 块 4. 类构造器

父类静态块-〉自身静态块-〉父类块-〉  父类构造器-〉 自身块-〉 自身构造器 

父类静态成员变量(或静态块)-〉自身静态成员变量(或静态块)-〉父类成员变量赋值-〉父类块赋值-〉父类构造器赋值-〉自身成员变量赋值-〉自身块赋值-〉自身构造器赋值


1.静态成员变量和静态块,运行顺序与 声明顺序一致。
2.类的初始化阶段:在类加载的init阶段,类的类构造器中会收集所有的static块和字段并执行,static块只执行一次,有JVM保证其只执行一次。
非静态块,每次创建对象时,会在构造函数之前调用。构造函数每次在创建对象最后调用。
3.创建子类对象,先创建父类对象,再创建子类对象。
public class Mastiff extends Dog {      public Mastiff() {          System.out.println("Mastiff");      }        {          System.out.println("block");      }      static {          System.out.println("static block");      }            public static void  main(String[] args){          Mastiff mastiff=new Mastiff();                }  }  
/** *DOG父类 */public class Dog {public Dog() {System.out.println("Dog");}}



<span style="font-size: medium;">/** *DOG父类 */public class Dog {public String type="父类成员变量赋的值";public Dog() {System.out.println("父类构造器--type-->"+type);type="父类构造器赋的值";                   System.out.println("父类构造器----type--->"+type);}{System.out.println("block---type--->"+type);type="父类块赋的值";}}</span>


public class Mastiff extends Dog {public String type="成员变量赋的值";public Mastiff() {System.out.println("构造器---type--->"+type);type="构造器赋的值";}public void say(){System.out.println("say---type---->"+type);}{System.out.println("block---type--->"+type);type="块赋的值";}public static void  main(String[] args){Mastiff mastiff=new Mastiff();mastiff.say()</span><span style="font-size: medium;">;</span><span style="font-size: medium;">}}





原创粉丝点击