当前位置:首页 » 《随便一记》 » 正文

详解JAVA中的构造方法

18 人参与  2023年04月10日 18:50  分类 : 《随便一记》  评论

点击全文阅读


目录

一、构造方法的概念

二、构造方法的特性


一、构造方法的概念

        构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时由编译器自动调用,并且在整个对象的生命周期内只调用一次。

代码演示:

public class Data {    public int year;    public int month;    public int day;    //构造方法:    public Data(int year, int month, int day) {        this.year = year;        this.month = month;        this.day = day;        System.out.println("调用构造方法");    }    public void printDate() {        System.out.println(year + "-" + month + "-" + day);    }    public static void main(String[] args) {        //创建一个对象        Data data = new Data(2022,11,13);        data.printDate();    }}

运行结果 :

注意:

         构造方法的作用就是对对象中的成员进行初始化,并不负责给对象开辟空间。

二、构造方法的特性

 1.构造方法的名字必须与类名相同

验证如下:

        因为如果构造方法的名字与类名不相同,JAVA的编译器就会将该方法归结为成员方法,而不会将其认定为构造方法,而构造方法是无返回值类型的,但是成员方法是必须有返回值类型,因此这就会导致编译通不过。

2.没有返回值类型,设置成void也不行

        这就是JAVA中对构造方法的规定,我们遵守即可

3.创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于每个人的出生,每个人只能出生一次)。

验证如下:

public class Data {    public int year;    public int month;    public int day;    //构造方法:    public Data(int year, int month, int day) {        this.year = year;        this.month = month;        this.day = day;        System.out.println("调用构造方法");    }    public void printDate() {        System.out.println(year + "-" + month + "-" + day);    }    public static void main(String[] args) {        //创建一个对象,并且在new对象的时候由编译器自动调用构造方法        Data data = new Data(2022,11,13);        data.printDate();    }}

运行结果:

        在运行结果中可以清晰地看到调用了Data中的构造方法 ,但是我们并没有在new出类后调用构造方法,这正验证了构造方法是在new对象时由编译器自动调用。

4.构造方法可以重载(用户可以根据自己的需求提供不同参数的构造方法)

验证如下:

public class Data {    public int year;    public int month;    public int day;        //不带参数的构造方法    public Data() {        this.year = 2022;        this.month = 11;        this.day = 13;    }    //带有三个参数的构造方法:    public Data(int year, int month, int day) {        this.year = year;        this.month = month;        this.day = day;        System.out.println("调用构造方法");    }    public void printDate() {        System.out.println(year + "-" + month + "-" + day);    }    public static void main(String[] args) {        //创建两个个对象        Data data = new Data(2022,11,13);        Data data1 = new Data();        data.printDate();    }}

        上述代码中的两个构造方法名字相同,参数列表不同,因此构成了方法重载。 

5.如果用户没有显式定义构造方法,编译器就会默认生成一份构造方法,而且默认生成的构造方法一定是无参的

验证如下:

public class Data {    public int year;    public int month;    public int day;    //没有显式定义构造方法    public void printDate() {        System.out.println(year + "-" + month + "-" + day);    }    public static void main(String[] args) {        //创建对象        Data data = new Data();        data.printDate();    }}

        上述代码中没有显式定义构造方法,但是依然可以new出对象,这就验证了编译器会默认给我们生成一个不带参数的构造方法 

注意:

         一旦用户定义了一个构造方法,编译器就不会自动生成的构造方法

验证如下:

public class Data {    public int year;    public int month;    public int day;    //定义构造方法:    public Data(int year, int month, int day) {        this.year = year;        this.month = month;        this.day = day;    }    public void printDate() {        System.out.println(year + "-" + month + "-" + day);    }    public static void main(String[] args) {        //创建对象        //这里如果编译器会自动生成,则生成的构造方法一定是无参的        //则此处创建对象就可以通过编译        //但实际情况是:编译报错        Data data = new Data();        data.printDate();    }}

 6.构造方法中,可以通过this调用其他的构造方法来简化代码

验证如下:

public class Data {    public int year;    public int month;    public int day;    //不带参数的构造方法    public Data() {        //这里通过this调用了带有三个参数的构造方法        this(2022,11,13);      }    //带有三个参数的构造方法:    public Data(int year, int month, int day) {        this.year = year;        this.month = month;        this.day = day;    }    public void printDate() {        System.out.println(year + "-" + month + "-" + day);    }    }

注意: 

        this()必须是构造方法中的第一条语句 ,且this不能形成环

验证如下:

 


总结

        以上就是本篇博客的全部内容,本文小编详细讲解了JAVA中构造方法的作用和构造方法的注意事项,希望对每一位读者都有帮助。

制作不易,望点赞、收藏、关注支持一下小编,后续还不断会有高质量文章出品,感谢!


点击全文阅读


本文链接:http://zhangshiyu.com/post/59214.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 她的记忆停留在了最爱初恋的那年许欣柔楚临川完本_她的记忆停留在了最爱初恋的那年(许欣柔楚临川)
  • 全书浏览假千金的实习生男友霸占我办公室,我反手让他们倾家荡产(顾家明)_假千金的实习生男友霸占我办公室,我反手让他们倾家荡产(顾家明)全书结局
  • 童养夫让我给他的新欢出修复费(林嘉芝林思雅)_童养夫让我给他的新欢出修复费林嘉芝林思雅
  • 全文资助生女婿让我给他白月光付三千万月子中心钱(宋清玉宋雅)列表_全文资助生女婿让我给他白月光付三千万月子中心钱
  • 碎在时光里的谎言喻景宴秦明月完本_碎在时光里的谎言(喻景宴秦明月)
  • 旧爱剜心吻成灰席鄢之岑秋全书免费旧爱剜心吻成灰席鄢之岑秋全书免费
  • 结婚六年丈夫不碰我谁知儿子亲爹是寡头(纪清言傅司砚),结婚六年丈夫不碰我谁知儿子亲爹是寡头
  • 老公想换掉我的男胎,我笑他自不量力(宋薇于继业)_老公想换掉我的男胎,我笑他自不量力宋薇于继业
  • 给太子下了噬心蛊后,皇后找上门(小夭赵劼)全书浏览_给太子下了噬心蛊后,皇后找上门全书浏览
  • 豪门绝嗣!带球跑的夫人回来了!(谢长宴慕清杳)_豪门绝嗣!带球跑的夫人回来了!谢长宴慕清杳
  • 完美身材(李朵林之晴)_完美身材李朵林之晴
  • 离婚后,我和快穿系统绑定(白意秋陈荣周立慧)_离婚后,我和快穿系统绑定(白意秋陈荣周立慧)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1