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

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

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

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

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

前言:

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

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

使用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();         }     } } ?

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

免责声明:

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

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

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

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

下载Word文档

猜你喜欢

Java中静态代码块、构造代码块、构造函数和普通代码块的区别

在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序,需要的朋友可以参考下
2023-05-19

C#如何构造函数

本篇内容主要讲解“C#如何构造函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何构造函数”吧!CLR Via C#中构造函数是可以将类型实例初始化为有效状态的特殊方法。构造函数在元数据中
2023-06-17

如何分析JAVA构造函数

如何分析JAVA构造函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 一、什么是构造函数Java构造函数,也叫构造方法,是JAVA中一种特殊的函数。与函数名相
2023-06-21

C++11中移动构造函数案例代码

C++11标准中为了满足用户使用左值初始化同类对象时也通过移动构造函数完成的需求,新引入了std::move()函数,它可以将左值强制转换成对应的右值,由此便可以使用移动构造函数,对C++11移动构造函数相关知识感兴趣的朋友一起看看吧
2023-01-04

C#中如何使用结构体构造函数

本篇文章给大家分享的是有关C#中如何使用结构体构造函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。///〈summary〉 ///启动服务端的参数结构 ///〈/summ
2023-06-17

PHP中构造函数如何使用

这篇文章将为大家详细讲解有关PHP中构造函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。PHP经过长时间的发展,很多用户都很了解PHP了,这里我发表一下个人理解,和大家讨论讨论。大
2023-06-17

C++类构造函数如何使用

本篇文章给大家分享的是有关C++类构造函数如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。所谓C++类是定义同一类所有对象的变量和方法的蓝图或原型,C++类体内的成员是需
2023-06-17

Kotlin构造函数与成员变量和init代码块执行顺序详细讲解

这篇文章主要介绍了Kotlin构造函数与成员变量和init代码块执行顺序,kotlin里面的构造函数分为主构造函数和次构造函数。主构造函数只能有一个,次构造函数个数不限制,可以有一个或者多个
2022-11-16

C#中构造函数如何使用

C#中构造函数如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#构造函数在使用方面及行为方面的一些特殊规则:1、如果开发人员没有为一个类提供构造函数,那
2023-06-17

ThinkPHP中如何设置构造函数

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

Kotlin构造函数、成员变量和init代码块执行顺序是什么

今天小编给大家分享一下Kotlin构造函数、成员变量和init代码块执行顺序是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下
2023-07-04

实例详解JavaScript构造函数和原型

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于构造函数和原型的相关问题,以及prototype相关内容,下面一起来看一下,希望对大家有帮助。
2022-11-24

Java构造函数的相互调用代码示例

在Java中,当为一个类创建了多个构造函数时,有时想在一个构造函数中调用另一个构造函数以减少代码量。这时可以使用this关键字来实现。有关构造函数的相关内容,大家可以参阅:Java编程中的构造函数详细介绍通常,当使用this关键字时,它意味
2023-05-30

Kotlin构造函数、成员变量和init代码块执行顺序实例分析

本文小编为大家详细介绍“Kotlin构造函数、成员变量和init代码块执行顺序实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Kotlin构造函数、成员变量和init代码块执行顺序实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路
2023-07-04

编程热搜

目录