《初始化块:普通初始化块、静态初始化块(类初始化块)》

本文详细解析了Java中的构造器与初始化块的使用,包括静态初始化块、普通初始化块的功能与执行顺序,以及如何通过this和super调用不同类型的构造器。通过具体示例代码,展示了多个类继承时构造器与初始化块的执行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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 */

 

转载于:https://www.cnblogs.com/sun-/p/5448290.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值