构造器

<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post" style="height: 2193px; overflow: hidden;">
              <div class="article-copyright">
                      <svg class="icon" title="CSDN认证原创" aria-hidden="true" style="width:53px; height: 18px; vertical-align: -4px;">
              <use xlink:href="#CSDN_Cert"></use>
            </svg>
          
          版权声明:          https://blog.csdn.net/qq_36652405/article/details/79939297        </div>
            <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
                              <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
          <div class="htmledit_views" id="content_views">
            <h1 style="text-align:center;">构造器的作用和例子</h1><p>构造器的<strong><span style="font-size:18px;color:#ff0000;">特点</span></strong>:<strong>1.方法名和类名相等</strong></p><p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 2.没有返回值,并且不能用void(如果用void来声明其返回值类型,那么java会把这个构造器当做方法来处理——那它不再是构造器)<br></strong></p><p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 3.构造器中的参数列表中的参数可有可无</strong><br></p><p style="text-align:center;"><strong>说简单点构造器的作用就是创建对象。</strong></p><p style="text-align:center;"><img src="https://img-blog.csdn.net/20180414131338980?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjUyNDA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt=""><br></p><p>上面声明了三个带参数的构造器,他们之间的关系为<span style="color:rgb(204,0,0);">重载,</span><span style="color:#000000;">那我还可以再创建一个无参数的构造器吗?看下图:</span></p><p><span style="color:#000000;"><img src="https://img-blog.csdn.net/20180414125227123?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjUyNDA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt=""><br></span></p><p style="text-align:center;"><span style="color:#000000;"><span style="color:rgb(0,0,0);">eclipse输出错误,提示我们这个无参数的构造器没有定义</span><br></span></p><p style="text-align:center;"><span style="color:#000000;">然后我把三个带参数的构造器给注释掉(忽略我的快捷注释...)</span></p><p><span style="color:#000000;"><img src="https://img-blog.csdn.net/20180414130211708?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjUyNDA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt=""><br></span></p><p style="text-align:center;"><span style="color:#000000;">然后再运行你会发现又可以了<img alt="惊讶" src="https://static-blog.csdn.net/xheditor/xheditor_emot/default/ohmy.gif"></span></p><p><span style="color:#000000;"><img src="https://img-blog.csdn.net/20180414130315373?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjUyNDA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt=""><br></span></p><p><span style="color:#000000;">这可以说明一个问题:如果类中没有带参数的构造器,那我们可以使用一个隐藏的默认构造器来创建对象,如果类中有带参数的构造器,那默认的构造器就会被覆盖,所以才会出现我们刚才这样的问题。</span></p><p><span style="color:#000000;">问题又来了:那我非要使用这个无参数的构造器怎么办?</span></p><p><span style="color:#000000;">其实我们可以显式的定义默认构造器,那默认的构造器就能够使用了,如下图:</span></p><p><span style="color:#000000;"><img src="https://img-blog.csdn.net/20180414131109758?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjUyNDA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt=""><br></span></p><p><span style="color:#000000;">这样就能解决上面那个问题了。</span></p><p><span style="color:#000000;">有童鞋就发现我刚才定义的三个构造器中的是有重复<span style="color:rgb(0,0,0);">代码的,如:this.name=name,这行代码分别在三个构造器中出现了一次,如下图:</span></span></p><p style="text-align:center;"><span style="color:#000000;"><span style="color:rgb(0,0,0);"><img src="https://img-blog.csdn.net/20180414133611273?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjUyNDA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt=""><br></span></span></p><p style="text-align:center;"><span style="color:#000000;"><span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,0);text-align:center;"><strong><span style="font-size:18px;">在此也补充上面一条博客this的用法</span></strong></span><br></span></span></p><p style="text-align:left;"><span style="color:#000000;"><span style="color:rgb(0,0,0);"><br></span></span></p><p><span style="color:#000000;">我们可以这样改进:</span></p><p style="text-align:center;"><span style="color:#000000;"><img src="https://img-blog.csdn.net/20180414134211974?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjUyNDA1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt=""><br></span></p><p style="text-align:center;"><span style="color:#000000;">this(name,age): 表明调用该类中另外一个带两个参数的构造器</span></p><p style="text-align:left;"><span style="font-size:18px;color:#ff0000;"><strong>注意:this在调用另外一个重载的构造器时,一定得作为构造器执行体的第一条语句!!!</strong></span></p><p style="text-align:right;"><span style="font-size:16px;"><strong>程序如果大佬有建议的话请指出,有问题欢迎在评论区提出,我会为你解疑答惑。</strong></span></p><p><br></p><p><br></p>          </div>
                  </div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值