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); // 使用带一个参数的构造方法
    }
}
 
	 ICP备案:
 ICP备案: 公安联网备案:
 公安联网备案: