一、构造函数: 用于给成员变量赋值
1.定义:
构造函数(Constructor) 是一种特殊的方法,用于在创建对象时初始化对象的状态。每个类都可以有一个或多个构造函数,它们的主要作用是为对象分配内存并初始化成员变量。
构造函数的名称必须与类名相同,并且没有返回类型(包括 void)
2.特点
名称与类名相同:构造函数的名称必须与类名完全一致。
没有返回类型:构造函数不返回任何值,甚至不能声明为 void。
自动调用:当使用 new 关键字创建构成函数所在的类生成一个对象时,构造函数会自动被调用。
可以重载:一个类可以有多个构造函数,只要它们的参数列表不同(即方法重载)。
默认构造函数:如果类中没有定义任何构造函数,Java 编译器会提供一个无参的默认构造函数。一旦定义了自定义构造函数,默认构造函数将不再自动生成。
public class Person {
String name;
int age;
// 无参构造函数
public Person() {
this.name = "Unknown";
this.age = 0;
}
// 带参构造函数
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 重载构造函数
public Person(String name) {
this.name = name;
this.age = 0;
}
}
// 使用不同的构造函数创建对象
Person person1 = new Person(); // 使用无参构造函数
Person person2 = new Person("Bob"); // 使用只传名字的构造函数
Person person3 = new Person("Alice", 30); // 使用带参构造函数
3.注意事项
super: this是当前类的对象,super指的是父类对象。Super不能调度父类的私有成员
this关键字:
作用: 引用当前对象实例,区分成员变量和局部变量。
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name; // this.name指向的是Person 中定义的 name 而等号后面 name 指向的是 参数name
this.age = age;
}
}
构造内调用构造
this():可以在一个构造函数中调用同一个类中的另一个构造函数,但必须是第一条语句。
public class Person {
String name;
int age;
public Person() { // 构造函数1
this("Unknown", 0); // 构造函数1内调用带参构造函数2
}
public Person(String name, int age) { //构造函数2
this.name = name;
this.age = age;
}
}