首页 > 代码库 > 【Java基础】构造方法调用构造方法

【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构造器必须放在构造器中。二是必须为构造器中的第一个语句。

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