面试题答案
一键面试构造函数重载的概念
在Java中,构造函数重载指在一个类中可以定义多个构造函数,这些构造函数具有相同的名称(与类名相同),但参数列表不同(参数的个数、类型或顺序不同)。通过构造函数重载,一个类可以以多种方式进行初始化,满足不同的创建对象的需求。
构造函数重载遵循的规则
- 参数列表必须不同:
- 参数个数不同:例如一个构造函数无参数,另一个构造函数有一个参数。
- 参数类型不同:如一个构造函数参数为
int
类型,另一个构造函数参数为String
类型。 - 参数顺序不同:例如一个构造函数参数顺序为
(int, String)
,另一个为(String, int)
。
- 构造函数的返回类型:构造函数没有返回类型,包括
void
也不能有,重载的构造函数同样不能有返回类型。 - 访问修饰符:构造函数的访问修饰符可以不同,例如一个构造函数是
public
,另一个可以是private
(用于单例模式等场景)。
实现构造函数重载的示例
public class Student {
private String name;
private int age;
// 无参数构造函数
public Student() {
name = "Unknown";
age = 0;
}
// 有一个参数的构造函数
public Student(String name) {
this.name = name;
age = 0;
}
// 有两个参数的构造函数
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void displayInfo() {
System.out.println("Name: " + name + ", Age: " + age);
}
}
在上述示例中,Student
类有三个构造函数,分别是无参数构造函数、有一个String
类型参数的构造函数和有一个String
类型参数与一个int
类型参数的构造函数,实现了构造函数的重载。可以通过以下方式使用这些构造函数:
public class Main {
public static void main(String[] args) {
Student student1 = new Student();
student1.displayInfo();
Student student2 = new Student("Alice");
student2.displayInfo();
Student student3 = new Student("Bob", 20);
student3.displayInfo();
}
}