栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java类中一个构造器的执行体里完全包含另一个构造器的执行体

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java类中一个构造器的执行体里完全包含另一个构造器的执行体

如果系统中包含了多个构造器,其中一个构造器的执行体里完全包含另一个构造器的执行体,如图所示。

 

从图中可以看出,构造器B完全包含了构造器A。对于这种完 全包含的情况,如果是两个方法之间存在这种关系,则可在方法B中调 用方法A。但构造器不能直接被调用,构造器必须使用new关键字来调 用。但一旦使用new关键字来调用构造器,将会导致系统重新创建一个 对象。为了在构造器B中调用构造器A中的初始化代码,又不会重新创 建一个Java对象,可以使用this关键字来调用相应的构造器。下面代 码实现了在一个构造器中直接使用另一个构造器的初始化代码。

上面的Apple类里包含了三个构造器,其中第三个构造器通过this来调用另一个重载构造器的初始化代码。程序中this(name, color);调用表明调用该类另一个带两个字符串参数的构造器。 使用this调用另一个重载的构造器只能在构造器中使用,而且必 须作为构造器执行体的第一条语句。使用this调用重载的构造器时, 系统会根据this后括号里的实参来调用形参列表与之对应的构造器。
为什么要用this来调用另一个重载的构造器?我把另一个 构造器里的代码复制、粘贴到这个构造器里不就可以了吗? 答:如果仅仅从软件功能实现上来看,这样复制、粘贴确实可以实现这个效果;但从软件工程的角度来看,这样做是相当糟糕的。在软件 开发里有一个规则:不要把相同的代码段书写两次以上!因为软件是 一个需要不断更新的产品,如果有一天需要更新图5.16中构造器A的 初始化代码,假设构造器B、构造器C……里都包含了相同的初始化代 码,则需要同时打开构造器A、构造器B、构造器C……的代码进行修 改;反之,如果构造器B、构造器C……是通过this调用了构造器A的 初始化代码,则只需要打开构造器A进行修改即可。因此,尽量避免 相同的代码重复出现,充分复用每一段代码,既可以让程序代码更加 简洁,也可以降低软件的维护成本。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315437.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号