广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >如何理解构造函数和构造代码块
  • 328
分享到

如何理解构造函数和构造代码块

2024-04-02 19:04:59 328人浏览 薄情痞子
摘要

这篇文章主要介绍“如何理解构造函数和构造代码块”,在日常操作中,相信很多人在如何理解构造函数和构造代码块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解构造函数和构造代

这篇文章主要介绍“如何理解构造函数和构造代码块”,在日常操作中,相信很多人在如何理解构造函数和构造代码块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解构造函数和构造代码块”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

前言:

构造代码块和构造函数之间是有一定的联系的,为了捕捉这种联系关系,我总结了一个案例,这个案例能加深你对构造函数和构造代码块的理解。

看代码前要先明白一个需求:

使用Java类描述一个婴儿,假设现在两种婴儿,一种婴儿是一出生就有了名字,我们把这种婴儿叫白户,另一种婴儿是出生后才有了名字,我们把这种婴儿叫黑户。(为了方便理解,我把刚出生就已经有名字的叫白户,把出生后才起名的叫黑户)

//婴儿类public class Baby {     int id;//身份证     String name;//名字     //哭     public void cry(){         System.out.println(name+"哇哇的哭。。。。");     } } class Test{     public static void main(String[] args) {         //创建一个baby对象         Baby baby = new Baby();//婴儿出生         baby.id=111;         baby.name="小娃娃";//黑户         baby.cry();     } } ??

运行结果:

小娃娃哇哇的哭。。。。

由于小娃娃是出生之后才赋的值,所以小娃娃是黑户,我们现在要让婴儿一出生就有名字,就要用构造函数。

构造函数的作用: 给对应的对象进行初始化

构造函数定义的格式:

修饰符 函数名(形式参数){       函数体。。。  }

构造函数要注意的细节:

1.构造函数没有返回值类型

2.构造函数的函数名必须要与类名一致

3.构造函数并不是由我们手动调用的,而是在创建对应的对象时,JVM就会主动调用到对应的构造函数

4.如果一个类没有显式的写上一个构造方法时,Java编译器会为该类添加一个无参的构造方法

5.如果一个类已经显示的写上一个构造方法时,Java编译器不会再为该类添加无参的构造方法

6.构造函数是可以在一个类中以函数重载的形式存在多个的

//婴儿类 public class Baby {     int id;//身份证     String name;//名字     //无参构造函数     public  Baby(){     }     //有参构造函数     public Baby(int id, String name) {         this.id = id;         this.name = name;         System.out.println("Baby的属性初始化完毕!!!");     }     //哭     public void cry(){         System.out.println(this.name+"哇哇的哭。。。。");     } } class Test{     public static void main(String[] args) {         //创建一个baby对象         Baby baby = new Baby(222,"小可爱");//婴儿出生    白户         baby.cry();     } }  ?

运行结果:

Baby的属性初始化完毕!!!

小可爱哇哇的哭。。。。

通过上面的黑户和白户,我们能对构造函数有个深刻的理解,下面我再引申出构造代码块,依旧是这个例子,但是需求变了,现在的需求是婴儿一出生就必须哭,可能说到这,要是有人理解了上面的代码,肯定马上就能想到,这还不简单,把哭的方法写到构造函数中不就行了,对,这样确实也可以,但是有弊端,Java要求代码简练,能少写的就不多写,你先看下面的代码就知道了。

//婴儿类 public class Baby {     int id;//身份证     String name;//名字     //无参构造函数     public  Baby(){         cry();     }     //有参构造函数     public Baby(int id, String name) {         this.id = id;         this.name = name;         cry();     }     //哭     public void cry(){         System.out.println("哇哇的哭。。。。");     } } class Test{     public static void main(String[] args) {         //创建一个白户baby对象         Baby baby = new Baby(222,"小可爱");//白户         //创建一个黑户baby对象         Baby baby1 = new Baby();//黑户     } } ??

运行结果:

哇哇的哭。。。。

哇哇的哭。。。。

虽然白户黑户两种婴儿都在出生的时候哭了,但是在两个构造函数中出现了重复代码,cry()  方法重复了两次,为了解决重复代码这个问题,下面就让构造代码块出场吧!

构造函数的作用:给对应的对象进行初始化

构造代码块的作用: 给对象进行统一的初始化

构造代码块的格式:

{     构造代码块 }

注意:构造代码块的大括号必须位于成员位置上

代码块的类别:

1.构造代码块

2.局部代码块

大括号位于方法之内

作用:缩短局部变量的生命周期,节省一点点内存。

3.静态代码块

{      静态代码块 }

构造代码块要注意的事项:

1.Java编译器编译一个Java源文件的时候,会把成员变量的声明语句提前至一个类的最前端

2.成员变量的初始化工作其实都是在构造函数中进行的

3.一旦经过Java编译器编译后,构造代码块的代码就会被移动到构造函数中执行,是在构造函数之前执行的,构造函数中的代码是最后执行的

4.成员变量的显式初始化与构造代码块的代码是按照当前代码的顺序执行的

//婴儿类 public class Baby {     int id;//身份证     String name;//名字     //构造代码块     {         cry();     }     //无参构造函数     public  Baby(){     }     //有参构造函数     public Baby(int id, String name) {         this.id = id;         this.name = name;     }     //哭     public void cry(){         System.out.println("哇哇的哭。。。。");     } } class Test{     public static void main(String[] args) {         //创建一个白户baby对象         Baby baby = new Baby(222,"小可爱");//白户         //创建一个黑户baby对象         Baby baby1 = new Baby();//黑户         //匿名对象         new Baby();     } }?? ?

运行结果:

哇哇的哭。。。。

哇哇的哭。。。。

哇哇的哭。。。。

//婴儿类 public class Baby {     int id;//身份证     String name;//名字     //构造代码块     {         cry();     }     //无参构造函数     public  Baby(){     }     //有参构造函数     public Baby(int id, String name) {         this.id = id;         this.name = name;     }     //哭     public void cry(){         System.out.println("哇哇的哭。。。。");     } } class Test{     public static void main(String[] args) {         //局部代码块         {             //创建一个白户baby对象             Baby baby = new Baby(222,"小可爱");//白户             //创建一个黑户baby对象             Baby baby1 = new Baby();//黑户             //匿名对象             new Baby();         }     } } ?

到此,关于“如何理解构造函数和构造代码块”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 如何理解构造函数和构造代码块

本文链接: https://www.lsjlt.com/news/83958.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 如何理解构造函数和构造代码块
    这篇文章主要介绍“如何理解构造函数和构造代码块”,在日常操作中,相信很多人在如何理解构造函数和构造代码块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解构造函数和构造代...
    99+
    2022-10-19
  • Java中静态代码块、构造代码块、构造函数和普通代码块的区别
    目录1、静态代码块①、格式②、执行时机③、静态代码块的作用④、静态代码块不能存在任何方法体中⑤、静态代码块不能访问普通变量2、构造代码块①、格式②、执行时机③、构造代码块的作用3、构...
    99+
    2023-05-19
    Java静态代码块 Java代码块区别
  • 如何理解JavaScript中构造函数
    如何理解JavaScript中构造函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JavaScript学习笔记...
    99+
    2022-10-19
  • 正确理解C++的构造函数和析构函数
    目录一、构造函数二、C++类的内存模型2.1、只定义成员函数2.2、往空类中添加静态成员变量2.3、再加入非静态成员变量三、this指针四、析构函数一、构造函数 首先,由于类只是一个...
    99+
    2022-11-12
  • C#如何构造函数
    本篇内容主要讲解“C#如何构造函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何构造函数”吧!CLR Via C#中构造函数是可以将类型实例初始化为有效状态的特殊方法。构造函数在元数据中...
    99+
    2023-06-17
  • Java构造函数通透理解篇
    目录一、什么是构造函数二、构造函数的特点三、示例四、默认构造函数五、构造函数的重载六、构造函数的使用一、什么是构造函数 Java构造函数,也叫构造方法,是JAVA中一种特殊的函数。与...
    99+
    2022-11-12
  • C++11中移动构造函数案例代码
    目录1. 拷贝构造函数中的深拷贝问题2. C++移动构造函数(移动语义的具体实现)1. 拷贝构造函数中的深拷贝问题 在 C++ 98/03 标准中,如果想用其它对象初始化一个同类的新...
    99+
    2023-01-04
    C++11移动构造函数 C++11构造函数 C++构造函数
  • 如何分析JAVA构造函数
    如何分析JAVA构造函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 一、什么是构造函数Java构造函数,也叫构造方法,是JAVA中一种特殊的函数。...
    99+
    2023-06-21
  • Kotlin构造函数与成员变量和init代码块执行顺序详细讲解
    目录在Kotlin中经常看到主构造函数、成员变量、init代码块(也叫初始化器),它们的执行时机和顺序是什么样的呢?看一下官方的示例: class InitOrderDemo(nam...
    99+
    2022-11-16
    Kotlin构造函数 Kotlin成员变量 Kotlin init代码块
  • Java构造函数的相互调用代码示例
    在Java中,当为一个类创建了多个构造函数时,有时想在一个构造函数中调用另一个构造函数以减少代码量。这时可以使用this关键字来实现。有关构造函数的相关内容,大家可以参阅:Java编程中的构造函数详细介绍通常,当使用this关键字时,它意味...
    99+
    2023-05-30
    java 构造函数相互调用 相互
  • Kotlin构造函数、成员变量和init代码块执行顺序是什么
    今天小编给大家分享一下Kotlin构造函数、成员变量和init代码块执行顺序是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-07-04
  • 实例详解JavaScript构造函数和原型
    以上就是实例详解JavaScript构造函数和原型的详细内容,更多请关注编程网其它相关文章!...
    99+
    2022-11-24
    javascript
  • C#中如何使用结构体构造函数
    本篇文章给大家分享的是有关C#中如何使用结构体构造函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。///〈summary〉  ///启动服务端的参数结构&...
    99+
    2023-06-17
  • JavaScript如何使用Function()构造函数
    这篇文章主要介绍JavaScript如何使用Function()构造函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Function()构造函数先看代码:var f&nb...
    99+
    2022-10-19
  • C#中构造函数如何使用
    C#中构造函数如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#构造函数在使用方面及行为方面的一些特殊规则:如果开发人员没有为一个类提供构造函数,那么,...
    99+
    2023-06-17
  • C++类构造函数如何使用
    本篇文章给大家分享的是有关C++类构造函数如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。所谓C++类是定义同一类所有对象的变量和方法的蓝图或原型,C++类体内的成员是需...
    99+
    2023-06-17
  • PHP中构造函数如何使用
    这篇文章将为大家详细讲解有关PHP中构造函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。PHP经过长时间的发展,很多用户都很了解PHP了,这里我发表一下个人理解,和大家讨论讨论。大...
    99+
    2023-06-17
  • ThinkPHP中如何设置构造函数
    这篇文章主要介绍“ThinkPHP中如何设置构造函数”,在日常操作中,相信很多人在ThinkPHP中如何设置构造函数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ThinkPHP中如何设置构造函数”的疑惑有所...
    99+
    2023-07-05
  • Kotlin构造函数、成员变量和init代码块执行顺序实例分析
    本文小编为大家详细介绍“Kotlin构造函数、成员变量和init代码块执行顺序实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Kotlin构造函数、成员变量和init代码块执行顺序实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-04
  • thinkphp中construct构造函数如何使用
    本篇文章为大家展示了thinkphp中construct构造函数如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。thinkphp中的__construct是不...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作