20180307 java面向对象-使用this语句解决构造器重载相互调用问题
class User
{
private String name = NULL;
private int age;
User()//默认构造器,什么都不做
{
}
User(String name)//创建对象,初始化name
{
this.name = name;
}
User(String name,int age)//创建对象,初始化name和age
{
this.name = name;//this表示当前创建的对象
this.age = age;
}
public void show()
{
System.out.println(name + " "+ age);
}
}
class ThisDemo{
public static void main(String[] args)
{
User u1 = new User("张三",16);//调用有参数的构造器
u1.show();//此处输出: 张三 16
}
};
上面的三个构造函数有代码重复的问题。
可修改成如下形式:
class User
{
private String name = NULL;
private int age;
User()//默认构造器,什么都不做
{
}
|
User(String name)//创建对象,初始化name
{
this.name = name;
}
User(String name,int age)//创建对象,初始化name和age
{
this(name);
//this.name = name;//this表示当前创建的对象
this.age = age;
}
public void show()
{
System.out.println(name + " "+ age);
}
}
另外这种在构造器中调用另外一个构造器时,this(name)必须作为构造器中的第一句话。
且构造器中只能调用一个重载的构造器。
一般在构造器互相调用时,都是少参数构造器调用多参数的构造器。