从一个程序开始:
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构造器必须放在构造器中。二是必须为构造器中的第一个语句。
新闻热点
疑难解答