【java】class内部模块(静态方法,静态块,静态变量,方法块等)执行顺序【图文教程】

    科技2023-10-20  95

    平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我。 跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信公众号【 IT特靠谱 】,每一篇文章都是心得总结,跟我学习你就是大牛!

     

    class内部模块(静态方法,静态块,静态变量,方法块等)执行顺序

     

          在代码执行调用的时候,分两种情况,一种是有继承关系的,一种是无继承关系的。

    1 父类:Father.java

    package com.test.alltest.java.classExecuteOrder; //父类 public class Father { public static Father instance = null;//(1) static { System.out.println("执行父类静态代码块");//(2) instance = new Father();//实例化一个父类对象 } { System.out.println("父类构造块");//(3)(7)(11) } public static void getFather(){ System.out.println("执行父类静态方法---调用的时候才执行"); } public Father() { System.out.println("执行父类构造方法");//(4)(8)(12) } }

     

    2 子类:Child.java

    package com.test.alltest.java.classExecuteOrder; //子类 public class Child extends Father{ public static Child instance = null;//(5) static { System.out.println("执行子类静态代码块");//(6) instance = new Child();//【实例化一个子类】 } { System.out.println("子类构造块");//(9)(13) } public static void getChild(){ System.out.println("执行子类静态方法---调用的时候才执行"); } public Child() { super();//这句有没有效果一样 System.out.println("执行子类构造方法");//(10)(14) } }

     

    3 测试类:ClassExecuteOrder.java

    package com.test.alltest.java.classExecuteOrder; /** * 测试类的执行顺序: * (1)先父后子 * (2)父静态--》子静态--》父构造--》子构造 * (3)静态变量--》静态代码块--》构造块--》构造方法 */ public class ClassExecuteOrder { public static void main(String[] args) { Child child = new Child(); System.out.println("child实例化完成!!"); } }

     

    4 测试结果

     

    5 总结

       (1)先说下没有继承关系的执行顺序:静态变量--->静态代码块-->构造块-->构造器。

       (2)有继承关系的执行顺序是:父类的静态变量-->父类静态代码块-->子类的静态变量-->子类静态代码块--->父类构造块-->父类构造方法-->子类构造块-->子类构造方法。

       (3)如果类定义中静态变量在静态代码块的下面,那么会优先执行静态代码块,然后执行静态变量!!也就是说:静态代码块和静态变量的执行顺序根代码顺序有关系!!

          如果以上教程对您有帮助,为了不迷路或需要技术支持,请关注一下吧~

     

    Processed: 0.012, SQL: 8