太自由

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 1 /*
 2 初始化块:普通初始化块、静态初始化块(类初始化块)
 3 
 4 下面程序创建了三个类:Root,Mid和Leaf,
 5 者三个类都提供了静态初始化块和普通初始化块,
 6 而且Mid类里还是用this调用重载构造区,而
 7 Leaf使用super显示调用父类指定的构造器
 8 */
 9 class Root
10 {
11     static{
12         System.out.println("Root的静态初始化块");
13     }
14 
15     {
16         System.out.println("Root的普通初始化块");
17     }
18     public Root()
19     {
20         System.out.println("Root的无参数的构造器");
21     }
22 }
23 
24 class Mid extends Root
25 {
26     static{
27         System.out.println("Mid的静态初始化块");
28     }
29 
30     {
31         System.out.println("Mid的普通初始化块");
32     }
33     public Mid()
34     {
35         System.out.println("Mid的无参数的构造器");
36     }
37     public Mid(String msg)
38     {
39         //通过this调用同一类中重载的构造器
40         this();
41         System.out.println("Mid的带参数的构造器,其参数值是:"+msg);
42     }
43 }
44 
45 class Leaf extends Mid
46 {
47     static{
48         System.out.println("Leaf的静态初始化块");
49     }
50 
51     {
52         System.out.println("Leaf的普通初始化块");
53     }
54     
55     public Leaf()
56     {
57         //通过super调用父类中有一个字符串参数的构造器
58         super("疯狂Java讲义");
59         System.out.println("执行Leaf的构造器");
60     }
61 }
62 
63 class Test
64 {
65     public static void main(String[] args) 
66     {
67         new Leaf();
68         new Leaf();
69     }
70 }
71 /*
72 运行如下:(好好理解理解)
73 ---------- 运行 ----------
74 Root的静态初始化块
75 Mid的静态初始化块
76 Leaf的静态初始化块
77 Root的普通初始化块
78 Root的无参数的构造器
79 Mid的普通初始化块
80 Mid的无参数的构造器
81 Mid的带参数的构造器,其参数值是:疯狂Java讲义
82 Leaf的普通初始化块
83 执行Leaf的构造器
84 Root的普通初始化块
85 Root的无参数的构造器
86 Mid的普通初始化块
87 Mid的无参数的构造器
88 Mid的带参数的构造器,其参数值是:疯狂Java讲义
89 Leaf的普通初始化块
90 执行Leaf的构造器
91 
92 输出完成 (耗时 0 秒) - 正常终止
93 */

 

posted on 2016-04-30 10:24  太自由  阅读(339)  评论(0编辑  收藏  举报