4.5 构造代码块
在例4.9中用Baby类创建Baby对象,即新出生的婴儿都会哭,因此在Baby类中的每个构造函数中都得调用cry()函数,但是这样会造成代码重复问题,而构造代码块可实现给所有的对象进行统一的初始化。
构造代码块是直接在类中定义且没有加static关键字的用一对{}括起来的代码。构造代码块在每次创建对象时都会被调用,并且构造代码块的执行次序优先于构造函数。因此,通常会把所有构造方法中的公共信息抽取出来放在构造代码块中,如婴儿一出生就会先哭。
【例4.10】
Example4_10.java
(https://www.daowen.com)

注意:
(1)在类中可以有多个构造代码块,其执行与代码块在类中定义的先后顺序一致。
(2)若在构造代码块中存在对成员变量的显示初始化,则成员变量的初始化与构造代码块中初始化的执行顺序一致。