什么是构造函数
构造函数是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值。一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们,即构造函数的重载。
示例:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Test {
public static void main(String[] args) {
Person person = new Person("张三", 20);
}
}
构造函数的作用及其特点
- 构造函数的作用就是给对象初始化,它可以简化代码。
- 若没有自定义构造函数,系统会自动生成一个无参且方法体为空的构造函数;
- 如果自定义构造函数:
- 必须和类名同名;
- 没有返回值和返回值类型,void也不能有;
- 一旦自定义构造函数,系统将不再构造函数;
- 构造函数在仅在对象创建时调用唯一一次;
- 构造函数可以重载;
- 可以通过get和set方法覆盖构造函数中的初始值。
public class Person {
private String name;
private int age;
// 若不自定义构造函数,系统会提供一个默认的构造函数
// public Person() {}
// 自定义构造函数,方法名必须和类名相同
public Person(int age) {
this.age = age;
}
// 构造方法可以重载
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 由于自定义了构造函数,系统不再提供默认的构造函数,所以我们再次创建无参无方法体的构造函数
public Person() {}
// 为避免代码过长,此处忽略get和set方法
public String toString() {
return "name = " + name + ", age = " + age;
}
}
public class Test {
public static void main(String[] args) {
Person person1 = new Person(); // 调用无参无方法体的构造函数,需要自己通过set方法设置值
Person person2 = new Person(20); // 调用带有一个参数的构造方法,此时需要手动设置name值
Person person3 = new Person("张三", 20); // 调用含有两个参数的构造方法,此时name和age已经有值
System.out.println(person1); // name = null, age = 0
System.out.println(person2); // name = null, age = 20
System.out.println(person3); // name = 张三, age = 20
}
}