网站大量收购独家精品文档,联系QQ:2885784924

[IT书籍]第4章初始化和清除.pdf

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4 第 章 初始化和清除 “随着计算机的进步,‘不安全’的程序设计已成为造成编程代价高昂的罪 魁祸首之一。” C “初始化”和 “清除”是这些安全问题的其中两个。许多 程序的错误都是 由于程序员忘记初始化一个变量造成的。对于现成的库,若用户不知道如何初始 化库的一个组件,就往往会出现这一类的错误。清除是另一个特殊的问题,因为 用完一个元素后,由于不再关心,所以很容易把它忘记。这样一来,那个元素占 用的资源会一直保留下去,极易产生资源(主要是内存)用尽的后果。 C++为我们引入了 “构建器”的概念。这是一种特殊的方法,在一个对象创 建之后自动调用。Java也沿用了这个概念,但新增了自己的 “垃圾收集器”,能 在资源不再需要的时候自动释放它们。本章将讨论初始化和清除的问题,以及 Java如何提供它们的支持。 4.1 用构建器自动初始化 对于方法的创建,可将其想象成为自己写的每个类都调用一次initialize()。 这个名字提醒我们在使用对象之前,应首先进行这样的调用。但不幸的是,这也 意味着用户必须记住调用方法。在Java 中,由于提供了名为 “构建器”的一种 特殊方法,所以类的设计者可担保每个对象都会得到正确的初始化。若某个类有 Java 一个构建器,那么在创建对象时, 会自动调用那个构建器——甚至在用户毫 不知觉的情况下。所以说这是可以担保的! 接着的一个问题是如何命名这个方法。存在两方面的问题。第一个是我们使 用的任何名字都可能与打算为某个类成员使用的名字冲突。第二是由于编译器的 C++ 责任是调用构建器,所以它必须知道要调用是哪个方法。 采取的方案看来是 最简单的,且更有逻辑性,所以也在Java里得到了应用:构建器的名字与类名 相同。这样一来,可保证象这样的一个方法会在初始化期间自动调用。 3 下面是带有构建器的一个简单的类 (若执行这个程序有问题,请参考第 章 的 “赋值”小节)。 148-149页程序 //:c04:SimpleConstructor.java //Demonstrationofasimpleconstructor. classRock{ Rock(){//Thisistheconstructor System.out.println(CreatingRock); } } publicclassSimpleConstructor{ publicstaticvoidmain(String[]args){ for(inti=0;i10;i++) newRock(); } }///:~ 现在,一旦创建一个对象: newRock(); 就会分配相应的存储空间,并调用构建器。这样可保证在我们经手之前,对 象得到正确的初始化。 请注意所有方法首字母小写的编码规则并不适用于构建器。这是由于构建器 的名字必须与类名完全相同! 和其他任何方法一样,构建器也能使用自变量,以便我们指定对象的具体创 建方式。可非常方便地改动上述例子,以便构建器使用自己的自变量。如下所示: 149页中程序 //:c04:SimpleConstructor2.java //Constructorscanhavearguments. classRock2{ Rock2(inti){ System.out.println( CreatingRocknumber+i); } } publicclassSimpleConstructor2{ publi

文档评论(0)

WX:r20090696 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档