我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解JAVA中的构造方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解JAVA中的构造方法

目录

一、构造方法的概念

二、构造方法的特


一、构造方法的概念

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

代码演示:

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中构造方法的作用和构造方法的注意事项,希望对每一位读者都有帮助。

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

来源地址:https://blog.csdn.net/m0_70322372/article/details/127829707

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解JAVA中的构造方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

关于Java类的构造方法详解

这篇文章主要介绍了关于Java类的构造方法详解的相关资料,需要的朋友可以参考下
2023-01-28

java中的构造方法怎么写

本篇内容介绍了“java中的构造方法怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!java中构造方法的写法为“class class_
2023-06-20

Java有参构造方法与无参构造方法(完全理解)

文章目录 前言有参构造方法无参构造方法定义四个类说明情况(如果还不清晰请看)Lombok的基本使用 前言 遇到了就简单写一下吧,如果能够对你有帮助,点个赞吧。首先清晰明了的了解到有参构造方法与无参构造方法、以及应用,然后实战
2023-08-16

【Java 基础】构造方法和 this 关键字详解

《Java 零基础入门到精通》专栏持续更新中。通过本专栏你将学习到 Java 从入门到进阶再到实战的全套完整内容,所有内容均将集中于此专栏。无论是初学者还是有经验的开发人员,都可从本专栏获益。 订阅专栏后添加我微信或者进交流群,
2023-08-16

java中构造方法的使用案例

这篇文章主要介绍了java中构造方法的使用案例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序
2023-06-15

深入浅析Java中的构造方法

深入浅析Java中的构造方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。构造函数是一种特殊的函数。其主要功能是用来在创建对象时初始化对象, 即为v对象成员变量赋初始值,总
2023-05-31

java中有关构造方法中的输出

这篇文章主要介绍了java中有关构造方法中的输出,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

详解Java使用super和this来重载构造方法

详解Java使用super和this来重载构造方法实例代码://父类 class anotherPerson{ String name = ""; String age = ""; public String getAge()
2023-05-31

php构造方法和java构造方法有哪些区别

这篇文章主要介绍“php构造方法和java构造方法有哪些区别”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php构造方法和java构造方法有哪些区别”文章能帮助大家解决问题。区别:1、重写子类构造函
2023-06-29

java中的ArrayList的构造方法有哪些?

下面由java零基础入门栏目为大家介绍ArrayList的构造方法有哪些,希望对大家的学习有所帮助!一、ArrayList(int initialCapacity)所以当我们要使用ArrayList时,可以 new ArrayList(大小)构造方法来指定集合
java中的ArrayList的构造方法有哪些?
2022-02-22

php构造方法和java构造方法有什么区别

区别:1、重写子类构造函数时,PHP不调用父类,而java默认在第一个语句前调用父类构造方法;2、Java允许有多个构造方法,而PHP值允许有一个构造方法;3、Java中的构造方法是必须的,而PHP中的不是。
2021-01-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录