zoukankan      html  css  js  c++  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使用POI插件将数据以excel形式备份
    bzoj1611[Usaco2008 Feb]Meteor Shower流星雨*
    bzoj1603[Usaco2008 Oct]打谷机*
    bzoj1599[Usaco2008 Oct]笨重的石子*
    bzoj1230[Usaco2008 Nov]lites 开关灯*
    bzoj4002[JLOI2015]有意义的字符串
    bzoj1613[Usaco2007 Jan]Running贝茜的晨练计划*
    bzoj1602[Usaco2008 Oct]牧场行走*
    bzoj1715[Usaco2006 Dec]Wormholes 虫洞*
    bzoj2442[Usaco2011 Open]修剪草坪*
  • 原文地址:https://www.cnblogs.com/zhubingqi/p/4063096.html
Copyright © 2011-2022 走看看