假如有如下这样一个程序
//创建一个名为Daxia(大侠)的类。
//输入属性:姓名,外号,年龄,帮派
public class Daxia{
String name;
String waihao;
int age;
String bangpai;
//构造大侠的构造方法,初始化大侠对象
public Daxia(String name, String waihao, int age, String bangpai){
this.name = name;
this.waihao = waihao;
this.age = age;
this.bangpai = bangpai;
}
//开始我们的main函数
public static void main(String[] args){
Daxia dx1 = new Daxia("武松","行者",21,"梁山");
}
这个程序创建了一个大侠类,并且创建了武松
大侠。
如果我想构建一个新的大侠对象,但是该大侠没有外号,应该如何进行初始化呢?
那不然,我们就构建两个构造函数,这就称为构造方法的重载。
//构造函数1
public Daxia(String name, int age, String bangpai){
this.name = name;
this.age = age;
this.bangpai = bangpai;
}
//构造函数2
public Daxia(String name, String waihao, int age, String bangpai){
this.name = name;
this.waihao = waihao;
this.age = age;
this.bangpai = bangpai;
}
但是我们发现,这两个构造函数相似的地方实在是太多了,有许多重复的代码,我们如何让代码看起来更简洁一些呢?
还记得this
的用法吗?使用this
可以初始化我们当前执行的对象的属性。它也可以调用当前类中其他的构造方法。
//构造函数1
public Daxia(String name, int age, String bangpai){
this.name = name;
this.age = age;
this.bangpai = bangpai;
}
//构造函数2
public Daxia(String name, String waihao, int age, String bangpai){
this(name, age, bangpai);
this.waihao = waihao;
}