金沙4787官网-澳门金沙4787.com|www.4787.com【官方网站】

您的位置:金沙4787官网 > 教育资讯 > 婴儿的出生为你解惑构造函数和构造代码块

婴儿的出生为你解惑构造函数和构造代码块

2019-07-04 16:11

  今天回想这几天走过的Java路程,发现漏了一个点,就是构造代码块,我绞尽脑汁,也没想起来它的作用,我骗不了我自己,就搜相关资料,重新学习,在学习的过程中发现构造代码块和构造函数有一定的联系,为了捕捉这种联系,我总结了一个案例,这个案例能加深你对构造函数和构造代码块的理解。我写这个博客一是为了避免下次再被构造代码块这块石头绊倒,二是为了能给需要解惑的人提供一些帮助,还是那句话:

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

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

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

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

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

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

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

  2.局部代码块大括号位于方法之内 作用:缩短局部变量的生命周期,节省一点点内存

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

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

本文链接:婴儿的出生为你解惑构造函数和构造代码块