父子类构造函数静态函数加载顺序

/**
 
 * 父类静态代码块 > 子类静态代码块 > 父类实例代码块  > 父类构造函数  > 子类实例代码块  > 子类构造函数
 * */
Java中,的初始化顺序如下[^1]: 1. **父静态变量和静态代码块** - 先于子类加载并执行。 ```java // 父静态变量和代码块 static String parentParam1 = "我是父-静态变量!"; static { System.out.println("父-静态代码初始化块完成!"); } ``` 2. **子静态变量和静态代码块** - 然后加载子时执行。 ```java class Child extends Parent { static String sonParam1 = "我是子-静态变量!"; static { System.out.println("子-静态代码块初始化完成!"); } } ``` 3. **父的非静态变量和非静态代码块** - 当创建父的对象时执行。 ```java class Parent { String parentParam2 = "我是父-非静态变量!"; { System.out.println("父-非静态代码块初始化完成!"); } } ``` 4. **父构造函数** - 创建父对象时调用。 5. **子的非静态变量和非静态代码块** - 创建子对象时执行,即使先创建的是父对象。 ```java class Child extends Parent { String sonParam2 = "我是子-非静态变量!"; { System.out.println("子-非静态代码块初始化完成!"); } public Child() { // 子构造函数 } } ``` 6. **子构造函数** - 最后,在创建子对象时调用。 这个测试例子展示了这些顺序: ```java public class Test { public static void main(String[] args) { // 子对象的创建会触发整个初始化过程 new Child(); } } ``` 运行上述代码,你会看到按照指定的顺序打印出各部分的初始化信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值