构造方法的形式:类名([参数列表]){}
特点:
- 构造方法没有返回值,就算void也不能有,这点与Java方法(或叫函数)不一样;
- 一个类中默认无参构造方法,但是当定义了一个有参构造方法时,则默认无参构造方法隐藏,即会报错;
- 构造方法不允许final和static修饰;
- 一个类中根据需要可以定义多个构造方法,这是重载的体现。
- 为了简化代码,类中构造方法可以互相调用,this(实参列表),但必须置于有效代码的第一行
public class UserInfo{
int age;
String name;
String tel;
String adderss;
//以上四行定义成员变量
UserInfo(int a, String n, String t,String add){//有参构造方法
age = a;
name = n;
tel = t;
address = add;
//上面四行代码就是给成员变量赋值的过程
}
UserInfo(int a, String n){//这也是“重载”的体现
/*
age = a;//此时若再对age和name赋值,则显得重复和冗余
name = n;//因此可以用this来调用其它已给age和name赋过值的有参构造方法,但必须置于有效代码第一行
*/
this(a,n,null,null);//参数少的可以调用参数多的,不过要在相应的位置赋予默认值
}
public static void main(String[] args){
/*
UserInfo userInfo = new UserInfo();//因为上面为有参构造方法,则这样写会报错
userInfo.age = 17;
*/
UserInfo zhang = new UserInfo(20,"张三","123456789","郑州市");
System.out.println(zhang.name);
UserInfo li = new UserInfo(21,"李四","987654321","北京市");
System.out.println(li.age);
//若只想给其中几个(而不是全部)成员变量赋值,则须在创建一个构造方法,请看上面第二个有参构造方法
UserInfo wang = new UserInfo(28,"王五");
System.out.println(wang.name);
}
}
//输出结果:
张三
21
王五
要想更好的理解什么是构造方法,需要知道什么是成员变量:一分钟让你了解成员变量