理解构造方法
构造器即构造函数或构造方法(constructor),其本质是一个特殊的方法,用来初始化对象。构造器的名称要与类的名称一致。从而返回该类的实例。
要点:
1.通过new关键字来调用构造器,返回该类的实例。
例如: 实例化一个无参构造函数
XiyoujiRole tangseng= new XiyoujiRole();
或者实例化一个有参构造函数
XiyoujiRole wukong = new XiyoujiRole("孙悟空","金箍棒");
2. 构造器里不能有return关键字!!构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类)。
------ 注意:写return不会报错,但只起到结束语句的作用不能返回值。
3.构造函数名称与类名保持一致(包括大小写)。
public class XiyoujiRole {
/*
无参构造函数(构造器)
名字保持一致
*/
public XiyoujiRole() {
}
}
4.如果没有定义构造器,则编辑器会自动定义一个无参构造函数。如果已定义则编译器不会自动添加!
案例:
-----声明构造器
public class XiyoujiRole {
//角色名
String name;
//武器
String wuqi;
//战斗力
String zhandouli;
//耐力
String naili;
// 无参构造函数(构造器)
public XiyoujiRole() {
}
// 有参构造函数(构造器)
public XiyoujiRole(String name, String wuqi, String zhandouli, String naili) {
this.name = name;
this.wuqi = wuqi;
this.zhandouli = zhandouli;
this.naili = naili;
}
//普通方法
public void hello(){
System.out.println("Hello"+name);
}
}
-----调用构造器
public class TestOne{
public static void main(String[] args) {
//调用无参构造器
XiyoujiRole tangseng= new XiyoujiRole();
tangseng.name="唐僧";
tangseng.wuqi="法杖";
tangseng.zhandouli="**";
tangseng.naili="*****";
System.out.println(tangseng.name);
System.out.println(tangseng.wuqi);
System.out.println(tangseng.naili);
System.out.println(tangseng.zhandouli);
tangseng.hello();
System.out.println("================================");
//调用有参构造器
XiyoujiRole wukong = new XiyoujiRole("孙悟空","金箍棒","**********","*****");
System.out.println(wukong.name);
System.out.println(wukong.wuqi);
System.out.println(wukong.naili);
System.out.println(wukong.zhandouli);
}
}
结果:
唐僧
法杖
*****
**
Hello唐僧
================================
孙悟空
金箍棒
*****
**********
构造器的重载(创建不同用户对象)
public class XiyoujiRole {
//角色名
String name;
//武器
String wuqi;
//战斗力
String zhandouli;
//耐力
String naili;
// 无参构造函数(构造器)
public XiyoujiRole() {
}
// 有参构造函数(构造器)
public XiyoujiRole(String name, String wuqi, String zhandouli, String naili) {
this.name = name;
this.wuqi = wuqi;
this.zhandouli = zhandouli;
this.naili = naili;
}
//普通方法
public void hello(){
System.out.println("Hello"+name);
}
}
如上代码所示,构造方法也是方法,只不过有特殊的作用而已。与普通方法一样,构造方法也可以重载。
注意:
如果方法构造中形参名与属性名相同时,需要使用this关键字区分属性与形参。如上代码所示:
this.name 表示属性name;name表示形参name