类结构——构造方法
- 构造方法的基本特性
- 默认构造方法
- 构造方法重载
- 使用this关键字
- 私有构造方法
- 总结
构造方法(Constructor)是Java编程语言中的一个重要概念,用于初始化新创建的对象。在对象实例化时被调用,并负责设置对象的初始状态。
构造方法的基本特性
名称:构造方法的名字必须与类名完全相同。
返回类型:构造方法没有返回类型声明,连void也不允许使用。
参数列表:可以定义带参或不带参的构造方法。带参构造方法可以在对象创建时接收参数,以便初始化对象的状态。
访问修饰符:构造方法可以有public、protected、默认(包级私有)或private等访问级别。
默认构造方法
1、如果一个类中没有显式定义任何构造方法,Java编译器会自动提供一个无参的默认构造方法。
2、一旦定义了至少一个构造方法,编译器将不再提供默认构造方法,因此如果仍然需要无参构造方法,则必须显式定义。
构造方法重载
在同一个类中,可以定义多个构造方法,只要它们的参数列表不同(参数的数量、类型或顺序),这就是构造方法的重载。
这种灵活性使得程序员可以根据不同的需求以不同的方式初始化对象。
public class ClassStructure {
private String name;
private int age;
//构造方法
//无参构造方法
public ClassStructure() {
}
//全参构造方法
public ClassStructure(String name, int age) {
this.name = name;
this.age = age;
}
//含参构造方法
public ClassStructure(String name) {
this.name = name;
}
}
测试一下
public class Main {
public static void main(String[] args) {
// 1. 创建一个名为 "ClassStructure" 的类,该类具有私有成员变量 "name" 和 "age",以及一个私有化无参构造方法。
for (int i = 0; i < 10; i++) {
new Thread(() -> {
ClassStructure classStructure =
ClassStructure.getClassStructure("测试");
System.out.println(classStructure);
}).start();
}
}
}
测试结果
使用this关键字
this关键字用于引用当前对象实例,可以在构造方法内部使用来区分成员变量和局部变量。
可以通过this()调用同一个类中的其他构造方法,这被称为构造方法链。这种调用必须是构造方法的第一条语句。
私有构造方法
类可以拥有私有的构造方法。
不能通过new关键字从类的外部创建此类的实例。
私有构造方法常用于实现单例模式,即确保一个类只有一个实例,并提供一个全局访问点来获取这个唯一的实例。
public class ClassStructure {
private String name;
private int age;
//私有化无参构造方法
private ClassStructure(String name) {
this.name = name;
}
//定义返回对象
private static ClassStructure classStructure ;
// 提供全局访问点来获取唯一的对象实例
public static synchronized ClassStructure getClassStructure(String name) {
if (classStructure == null) {
classStructure = new ClassStructure(name);
}
return classStructure;
}
public String getName() {
return name;
}
}
总结
构造方法是Java中用于初始化新创建对象的特殊方法,方法名称必须与类名相同且不声明任何返回类型。
用于程序员在对象实例化时设置初始状态,确保每个对象从一开始就处于有效和一致的状态。
构造方法可以带有参数,以适应不同的初始化需求,并支持重载,即一个类可以拥有多个构造方法,只要它们的参数列表不同。
通过this关键字,可以在构造方法内部引用当前对象实例,或者调用同一个类中的其他构造方法,实现构造方法链。
Java编译器会为没有显式定义构造方法的类提供一个无参的默认构造方法;
一旦定义了至少一个构造方法,这个默认构造方法就不再自动生成。
构造方法还可以使用不同的访问修饰符来控制谁能实例化该类的对象,甚至可以通过私有构造方法限制外部直接实例化,这在实现单例模式等设计模式时非常有用。
W总之,构造方法是面向对象编程的重要组成部分,对于编写健壮、灵活且易于维护的Java应用程序至关重要。