Java类的构造方法(非常详细,附带实例)
构造方法是 Java 类里一种特殊的方法,用于初始化对象的状态。
学习构造方法之前,相信读者已经掌握了 Java 类中普通成员方法的使用。构造方法和普通方法的区别有以下几点:
构造方法的主要作用有两个:
合理利用构造方法可以提高代码质量,正确初始化对象。构造方法示例代码如下:
然后,定义了一个构造方法
当创建 Person 对象时,可以通过调用构造方法并传递参数来初始化对象的实例变量,例如:
需要注意的是,如果在类中显式定义了任何构造方法(无论是有参构造方法还是无参构造方法),编译器将不再提供默认构造方法,此时必须自己显式定义需要的构造方法。如果希望使用无参构造方法,同时又定义了其他构造方法,可以通过显示定义一个无参构造方法来实现。
重载构造方法主要有以下两种场景:
示例代码如下:
通过重载构造方法,提供了三种不同的初始化方式:
使用构造方法重载,我们可以根据不同的需求创建不同类型的矩形对象,示例代码如下:
学习构造方法之前,相信读者已经掌握了 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); // 使用带一个参数的构造方法 } }