定义:每一个class中都有构造方法。当创建一个对象时,我们所调用的是默认的构造方法。使用构造方法的作用是,初始化一个实例对象。
默认构造方法
默认的构造方法属于无参构造方法。调用默认的构造方法时,需要调用对应参数的set方法,不然实例的内部状态是不正确的。
默认的构造方法的形式:
class 类名称 {
public 类名称() {
}
}
例如:
class Person {
private String name;
private int age;
//构造方法
public Person() {
}
//set,get方法
public String setName(name) {
this.name = name;
}
public int setAge(age) {
this.age = age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
}
有参构造方法
其中的构造方法就是默认的构造方法,在class中可写可不写,当然,如果需要在实例化对象的时候就传参也是可以的,只要自己定义一个有参数的构造方法即可。
但要注意的是,当你定义了一个有参数的构造方法时,那默认的无参构造方法就会不存在,若实例化对象时使用的是无参构造方法那就会报错。若是想要两个都使用,就要定义两个构造方法。
例如:
public class Main {
public static void main(String[] args) {
Person p1 = new Person("Xiao Ming", 15); // 既可以调用带参数的构造方法
Person p2 = new Person(); // 也可以调用无参数构造方法
}
}
class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String setName(name) {
this.name = name;
}
public int setAge(age) {
this.age = age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
}
多构造方法
构造方法的个数不局限于1个,可以根据参数的类型及数量进行定义,在new的时候,编译器会根据参数的类型,位置以及数量找到对应的构造方法。
并且也可以在构造方法中调用构造方法,可以实现构造方法的复用。调用构造方法的方法是:this(所调用的构造方法的参数);
例如:
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(String name) {
this(name, 18); // 调用另一个构造方法Person(String, int)
}
public Person() {
this("Unnamed"); // 调用另一个构造方法Person(String)
}
}