构造方法是 Java 类里一种特殊的方法,用于初始化对象的状态。
学习构造方法之前,相信读者已经掌握了 Java 类中普通成员方法的使用。构造方法和普通方法的区别有以下几点:
构造方法的名称必须和类名完全一致,而普通方法可以任意命名;
构造方法不需要返回值类型,也不写 void,普通方法都需要返回值;
构造方法在创建对象时自动调用,普通方法需要手动调用;
构造方法不能被继承,子类不能继承父类的构造方法。
构造方法的主要作用有两个:
初始化对象的状态,如成员变量赋初始值。
加载配置文件,如从属性文件中读取初始化参数。
合理利用构造方法可以提高代码质量,正确初始化对象。构造方法示例代码如下:
public class Person {
// 实例变量
String name;
int age;
// 构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
在上面的示例中,定义了一个名为 Person 的类,该类有两个实例变量 name 和 age,用于表示人的姓名和年龄。
然后,定义了一个构造方法public Person(String name, int age),这个构造方法接收两个参数 name 和 age,并在创建 Person 对象时使用这些参数来初始化对象的实例变量。
在构造方法内部,使用 this 关键字来引用当前对象,以区分参数与实例变量的名称。关于 this 关键字的用法,请阅读《Java this关键字详解(3种用法)》一文。
当创建 Person 对象时,可以通过调用构造方法并传递参数来初始化对象的实例变量,例如:
public class Main {
public static void main(String[] args) {
// 使用构造方法创建 Person 对象并初始化实例变量
Person person1 = new Person("Alice", 25);
Person person2 = new Person("Bob", 30);
}
}
在上述示例中,通过调用构造方法Person("Alice", 25)和Person("Bob", 30)来创建两个 Person 对象 person1 和 person2,并初始化它们的 name 和 age 实例变量。这样,就可以在创建对象时直接传递参数,并自动完成对象的初始化工作。
Java默认构造方法
在 Java 类中,如果没有显式定义任何构造方法,编译器会自动提供一个默认的构造方法。默认构造方法没有参数,也不执行任何操作,仅仅是为了保证对象的实例化过程能够顺利进行。
public class Person {
String name;
int age;
// 默认构造方法(编译器自动添加)
public Person() {
// 编译器自动添加空的构造方法体
}
}
在上述示例中,使用默认构造方法 Person() 来创建 Person 对象 person,并初始化对象的实例变量。由于默认构造方法没有参数,因此可以直接使用空括号 new Person() 来创建对象。
需要注意的是,如果在类中显式定义了任何构造方法(无论是有参构造方法还是无参构造方法),编译器将不再提供默认构造方法,此时必须自己显式定义需要的构造方法。如果希望使用无参构造方法,同时又定义了其他构造方法,可以通过显示定义一个无参构造方法来实现。
Java构造方法重载
构造方法与普通方法一样,也可以被重载。构造方法重载是指一个类中有多个参数不同的构造方法。
重载构造方法主要有以下两种场景:
1) 根据不同参数创建不同状态的对象;
2) 方便调用,避免频繁设置属性。
示例代码如下:
class Rectangle {
double length;
double width;
// 无参构造方法
public Rectangle() {
this.length = 0.0;
this.width = 0.0;
}
// 构造方法重载:带两个参数
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
// 构造方法重载:带一个参数,用于创建正方形
public Rectangle(double side) {
this.length = side;
this.width = side;
}
}
在上述示例中,定义了一个名为 Rectangle 的类,该类表示一个矩形对象。这个类有两个实例变量 length和width,分别用于表示矩形的长度和宽度。
通过重载构造方法,提供了三种不同的初始化方式:
无参构造方法:创建矩形对象时不传递任何参数,将长度和宽度都初始化为默认值 0.0;
带两个参数的构造方法:创建矩形对象时传递两个参数 length 和 width,用于分别初始化矩形的长度和宽度;
带一个参数的构造方法:创建正方形对象时传递一个参数 side,将长度和宽度都初始化为相同的值,用于创建正方形。
使用构造方法重载,我们可以根据不同的需求创建不同类型的矩形对象,示例代码如下:
public class Main {
public static void main(String[] args) {
// 创建矩形对象,使用不同的构造方法进行初始化
Rectangle rectangle1 = new Rectangle(); // 使用无参构造方法
Rectangle rectangle2 = new Rectangle(5.0, 3.0); // 使用带两个参数的构造方法
Rectangle square = new Rectangle(4.0); // 使用带一个参数的构造方法
}
}