构造代码块你用对了吗

含义

构造代码块(也称为初始化块)是放在类中的一段代码块,用{ } 进行包裹,位于类的成员变量和方法之间,用于完成初始化操作,通常和构造方法一起使用,执行于构造方法之前。

静态构造代码块整个生命阶段只运行一次——类加载阶段;

非静态构造代码块整个生命阶段至少运行一次,每当有类的实例被创建时非静态代码块就会运行一次;

构造代码块最佳实践

1.对象属性的默认初始化

对象属性的初始化应该在构造方法中进行。如果有必要,在构造代码块中也可以进行一些对象属性的默认初始化(例如声明一个 List 属性,并在构造代码块中给它赋初值)。

public class MyClass {

private List<String> myList;

 

// 构造代码块中对 myList 进行默认初始化
{
this.myList = new ArrayList<>()

}

 

// 构造方法中赋初值

public MyClass() {

this.myList.add("default");
}

}

 

2.可以将多个构造方法中相同的初始化逻辑提取到构造代码块中

可以将多个构造方法中相同的初始化逻辑提取到构造代码块中,避免出现重复代码。这样不仅可以提高代码的复用性,还能使代码更加清晰简洁。

 

3.构造代码块必须被子类继承,无法被重写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class ParentClass {
    // 父类的构造代码块
    {
        System.out.println("ParentClass constructor block");
    }
}
 
public class ChildClass extends ParentClass {
    // 子类重写了父类的构造代码块
    {
        System.out.println("ChildClass constructor block");
    }
}
 
public static void main(String[] args) {
    new ChildClass();
}
// 输出结果:
// ParentClass constructor block
// ChildClass constructor block

  

posted @   HexThinking  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示