代码块及其细节

/*
代码块:又称初始块,是类成员的一部分。类似于方法,将语句用{}包起来
代码块没有名字 基本语法如下
***【修饰符】 {代码……}; 修饰符可有可无,要写的话,只能写static。***‘;’可以省略
不需要创建对象或通过类的显式调用  来调用。
***当加载类时、或者创建对象时被隐式调用

使用场景
如果多个构造器中都有重复的语句,可抽取到初始代码块中,提高代码重用性。相当于对构造器的补充机制,
***因此代码块的调用顺序会先于构造器
 */
 

//代码块细节分析
/*
1.static代码块又叫静态代码块,只会随着类被加载时执行,并且只会执行一次
普通代码块是在创建对象时调用的,创建一次就调用一次。
2.类在是么时候被加载
 Ⅰ. 创建对象前(new)会加载类;
 *****不同老韩Ⅱ. 创建子类对象时,会优先加载父类,再加载子类.
前提是父类代码块用static修饰,若没有修饰,则还是会先执行子类代码块,再执行父类代码块,
 有修饰,则按照父类到子类顺序执行代码块
 Ⅲ.调用静态成员时,static方法、static属性。
 下面例子说明

 3.在创建对象时,在一个类中的调用顺序
 Ⅰ.只有静态代码块和静态属性初始化存在时,二者优先级相同,调用时按二者定义的顺序进行
 Ⅱ.只有普通代码块和普通属性初始化存在时,二者优先级相同,调用时按二者定义顺序进行
 Ⅲ.既有静态又有普通时,静态优先执行,在执行普通。
 Ⅳ.代码块和属性初始化(静态和非静态)执行完后,才会调用构造器。

{构造器的最前面其实隐藏了super()和调用普通代码块两个语句}
 4.创建子类时(继承关系),静态代码块、静态属性初始化、
 普通代码块、普通属性初始化、构造方法的调用顺序。(该顺序遵循上3的顺序)
 Ⅰ.父类的静态代码块和静态属性(优先级一样)
 Ⅱ.子类的静态代码块和静态属性(优先级一样)
 Ⅲ.父类的普通代码块和普通属性初始化(优先级一样)
 Ⅳ.父类的构造方法
 Ⅴ.子类的普通代码块和普通属性初始化
 Ⅵ.子类的构造方法

 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值