详解JAVA中的构造方法

这篇具有很好参考价值的文章主要介绍了详解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();
    }
}

运行结果 :

详解JAVA中的构造方法

注意:

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

二、构造方法的特性

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

验证如下:

详解JAVA中的构造方法

        因为如果构造方法的名字与类名不相同,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();
    }
}

运行结果:

详解JAVA中的构造方法

        在运行结果中可以清晰地看到调用了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中的构造方法

 详解JAVA中的构造方法


总结

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

制作不易,望点赞、收藏、关注支持一下小编,后续还不断会有高质量文章出品,感谢!文章来源地址https://www.toymoban.com/news/detail-402306.html

到了这里,关于详解JAVA中的构造方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 5.2 构造数值积分公式的基本方法与有关概念的例题分析

      确定求积公式 中的系数,使其具有尽可能高的代数精度。 我的答案: 一、信息 1.给了我一个求积公式 2.确定求积公式中的系数 3.使得这个求积系数具有尽可能高的代数精度。 二、分析 条件1:告诉我这个求积公式具体有3个未知量 条件2:告诉我此次问题解答的目标1是确定

    2024年02月01日
    浏览(36)
  • Java中的equals方法详解,Java中的toString方法

    先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。 ①== 是Java中的比较运算符 ②比较基本类型时,比较的是双方的值 ③比较引用类型时,比较的是双方的地址值 比较结果如下:可以看到==比较的是引用类型数据的地址,想不比较地址就需要用

    2024年02月06日
    浏览(35)
  • 【Java基础教程】(七)面向对象篇 · 第一讲:上干货!面向对象的特性、类与对象、内存结构引用分析、垃圾收集器 GC处理、封装性详解、构造方法、匿名对象、简单 Java 类~

    程序是将数据和逻辑封装在一起的代码段。在Java中,方法是常用的代码段封装方式。然而,在Java中,方法必须存在于一个类中才能使用。因此,我们将进入本章的核心内容——面向对象编程。 利用面向对象设计的程序可以实现代码的重用,并方便开发者进行项目维护。面向

    2024年02月13日
    浏览(33)
  • Java中的.divide()方法详解

    引言 在ava中,我们经常需要进行数值运算、除法是其中一种常见的运算提作,用干将一个数值除以另一个数值,并返回商。Java提供了多种方式来执行除法运算,其中之一就是使用.divide)方法。本文将详细介绍Java中的.divide(方法,包括其语法、用法和示例代码,并探讨其在实际

    2024年03月21日
    浏览(28)
  • Java中的main()方法详解

    在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等。 在看Java中的mai

    2024年02月07日
    浏览(26)
  • Java中的方法引用--【基本使用详解】

    🎉博客首页:痛而不言笑而不语的浅伤 📢欢迎关注🥳点赞 👍 收藏 ⭐留言 📝 欢迎讨论! 🔮本文由痛而不言笑而不语的浅伤原创,CSDN首发! 🌋系列专栏:《JavaSE系列详解》 🧿首发时间:2022年5月27日 ❤:热爱Java学习,期待一起交流! 🙏🏻作者水平有限,如果发现错

    2024年02月06日
    浏览(40)
  • Java中的String类getBytes()方法详解与实例

    简介 Java中的String类提供了getBytes()方法,用于将字符串转换为字节数组。该方法允许在不同的字符编码方式下进行转换,从而实现字符串和字节数据之间的互相转换。本文将详细解释getBytes()方法的用法和参数,提供完整的实例和代码,并给出运行结果和总结。 详解  在Java中

    2024年02月08日
    浏览(31)
  • Java 8 中的 Stream API - map() 方法详解

    摘要: Java 8 中的 Stream API 提供了一种新的处理集合和数组的方式,可以使代码更加简洁、易读,同时还可以提高性能。其中 map() 方法是比较常用的方法之一,它可以将 Stream 对象中的每个元素映射为另一个元素。本文将对 Java 8 中的 Stream API 和 map() 方法进行详细介绍,并通

    2024年04月09日
    浏览(43)
  • 【Java编程教程】详解Java 构造函数

    在Java中,构造函数是类似于方法的代码块。它在创建类的实例时被调用。在调用构造函数时,对象的内存是在内存中分配的。 它是一种特殊类型的方法,用于初始化对象。 每次使用 new() 创建对象时,至少会调用一个构造函数。 如果类中没有可用的构造函数,它会调

    2024年02月06日
    浏览(33)
  • Python中的super:调用父类的构造方法

     在子类构造方法中调用父类构造方法的两种方式: 1、未绑定的方法: 直接使用父类名来进行调用 ,即‘父类名.父类方法名(self,[参数1, 参数2,...])’ 2、 super() : 如果涉及多继承,该函数只能调用第一个直接父类的构造方法。super().父类方法名(self, [参数1, 参数2,...])或supe

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包