• 静态初始化模块执行顺序


    测试静态初始化模块执行顺序的程序:

     1 class Root
     2 {
     3     static{
     4         System.out.println("Root的静态初始化块");
     5     }
     6     {
     7         System.out.println("Root的普通初始化块");
     8     }
     9     public Root()
    10     {
    11         System.out.println("Root的无参数的构造器");
    12     }
    13 }
    14 class Mid extends Root
    15 {
    16     static{
    17         System.out.println("Mid的静态初始化块");
    18     }
    19     {
    20         System.out.println("Mid的普通初始化块");
    21     }
    22     public Mid()
    23     {
    24         System.out.println("Mid的无参数的构造器");
    25     }
    26     public Mid(String msg)
    27     {
    28         //通过this调用同一类中重载的构造器
    29         this();
    30         System.out.println("Mid的带参数构造器,其参数值:" + msg);
    31     }
    32 }
    33 class Leaf extends Mid
    34 {
    35     static{
    36         System.out.println("Leaf的静态初始化块");
    37     }
    38     {
    39         System.out.println("Leaf的普通初始化块");
    40     }    
    41     public Leaf()
    42     {
    43         //通过super调用父类中有一个字符串参数的构造器
    44         super("Java初始化顺序演示");
    45         System.out.println("执行Leaf的构造器");
    46     }
    47 
    48 }
    49 
    50 public class TestStaticInitializeBlock
    51 {
    52     public static void main(String[] args) 
    53     {
    54         new Leaf();
    55         
    56 
    57     }
    58 }

    运行结果如下:

    Root的静态初始化块
    Mid的静态初始化块
    Leaf的静态初始化块
    Root的普通初始化块
    Root的无参数的构造器
    Mid的普通初始化块
    Mid的无参数的构造器
    Mid的带参数构造器,其参数值:Java初始化顺序演示
    Leaf的普通初始化块
    执行Leaf的构造器

    先执行Static的初始化方法,然后执行普通初始化方法,之后是无参的构造器,其次有参的构造器。

    结论:首先执行的是父类静态初始化模块,然后是子类静态初始化模块,然后再是由父类到子类依次执行普通、无参、有参的构造器。

    1.static静态初始化块只执行一次

    2.在执行子类的静态初始化块时会调用父类的静态初始化块。 

  • 相关阅读:
    HDU 1358 Period
    HDU 1867 A + B for you again
    jquery的height()和javascript的height总结,js获取屏幕高度
    [前端] jquery验证手机号、身份证号、中文名称
    通过GitHub Pages建立个人站点(详细步骤)
    jQuery中多个元素的Hover事件
    jquery判断密码是否一致?
    php 5.6以上可以采用new PDD连接数据库的方法。
    如何学习html画布呢(canvas)
    跨年总结2015,明年就是2016了
  • 原文地址:https://www.cnblogs.com/cxy0210/p/11684846.html
Copyright © 2020-2023  润新知