java面向对象-使用this语句解决构造器重载相互调用问题

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()//默认构造器,什么都不做

  {

   

  }

This(name)调用的是User(String name){…}构造器

 

 


 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)必须作为构造器中的第一句话。

且构造器中只能调用一个重载的构造器。

一般在构造器互相调用时,都是少参数构造器调用多参数的构造器。

 

 

 

 

 

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值