【Java基础】构造方法调用构造方法

    从一个程序开始:

 1 class dog
 2 {
 3     private String name;
 4     private String color;
 5     private int age;
 6 
 7     dog(String name)
 8     //仅给name赋值
 9     {
10         this.name=name;
11     }
12     dog(String name,String color)
13     //仅给name,color赋值
14     {
15         this.name=name;//但之前有过类似代码
16         this.color=color;
17     }
18     dog(String name,String color,int age)
19     //仅给name,color,age赋值
20     {
21         this.name=name;
22         this.color=color;//之前有过类似代码
23         this.age=age;
24     }
25 /*以上代码缺点,代码重复,
26 而且如果修改最初定义的参数(如name)时,
27 需要大量修改方法中的参数(3处修改),造成不便*/
28 }
29 
30 class ConstructerDemo 
31 {
32     public static void main(String[] args) 
33     {
34 
35     }
36 }
View Code

    此时我们可以使用构造方法来调用构造方法(形式为this(实参)),来解决上述问题,改进如下:

 1 class dog
 2 {
 3     private String name;
 4     private String color;
 5     private int age;
 6 
 7     dog(String name)
 8     //仅给name赋值
 9     {
10         this.name=name;
11     }
12     dog(String name,String color)
13     //仅给name,color赋值
14     {
15         //this.name=name;//但之前有过类似代码
16         this(name);//改进后
17         this.color=color;
18     }
19     dog(String name,String color,int age)
20     //仅给name,color,age赋值
21     {
22         //this.name=name;
23         //this.color=color;//之前有过类似代码
24         this(name,color);//改进后
25         this.age=age;
26     }
27 /*以上代码缺点,代码重复,
28 而且如果修改最初定义的参数(如name)时,
29 需要大量修改方法中的参数(3处修改),造成不便*/
30 }
31 
32 class ConstructerDemo 
33 {
34     public static void main(String[] args) 
35     {
36 
37     }
38 }
View Code

    我们要注意的是,对this构造器的调用必须是构造器中第一个语句

    也就是两点要注意,一是this构造器必须放在构造器中。二是必须为构造器中的第一个语句。

原文地址:https://www.cnblogs.com/zhubingqi/p/4063096.html