《java编程思想第六章复用类.docxVIP

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《java编程思想第六章复用类

致读者:我从 2002年7月开始翻译这本书,当时还是第二版。但是翻完前言和介绍部分后,chinapub就登出广告,说要出版侯捷的译本。于是我中止了翻译,等着侯先生的作品。我是第一时间买的这本书,但是我失望了。比起第一版,我终于能看懂这本书了,但是相比我的预期,它还是差一点。所以当Bruce Eckel在他的网站上公开本书的第三版的时候,我决定把它翻译出来。说说容易,做做难。一本1000多页的书不是那么容易翻的。期间我也曾打过退堂鼓,但最终还是全部翻译出来了。从今年的两月初起,到7月底,我几乎放弃了所有的业余时间,全身心地投入本书的翻译之中。应该说,这项工作的难度超出了我的想像。首先,读一本书和翻译一本书完全是两码事。英语与中文是两种不同的语言,用英语说得很畅的句子,翻成中文之后就完全破了相。有时我得花好几分钟,用中文重述一句我能用几秒钟读懂的句子。更何况作为读者,一两句话没搞懂,并不影响你理解整本书,但对译者来说,这就不一样了。其次,这是一本讲英语的人写给讲英语的人的书,所以同很多要照顾非英语读者的技术文档不同,它在用词,句式方面非常随意。英语读者会很欣赏这一点,但是对外国读者来说,这就是负担了。再有,Bruce Eckel这样的大牛人,写了1000多页,如果都让你读懂,他岂不是太没面子?所以,书里还有一些很有“禅意”的句子。比如那句著名的“Thegenesis of the computer revolution was in a machine. The genesis of ourprogramming languages thus tends to look like that machine.”我就一直没吃准该怎么翻译。我想大概没人能吃准,说不定Bruce要的就是这个效果。这是一本公认的名著,作者在技术上的造诣无可挑剔。而作为译者,我的编程能力差了很多。再加上上面讲的这些原因,使得我不得不格外的谨慎。当我重读初稿的时候,我发现需要修改的地方实在太多了。因此,我不能现在就公开全部译稿,我只能公开已经修改过的部分。不过这不是最终的版本,我还会继续修订的。本来,我准备到10月份,等我修改完前7章之后再公开。但是,我发现我又有点要放弃了,因此我决定给自己一点压力,现在就公开。以后,我将修改完一章就公开一章,请关注/shhgs/tij.html。如果你觉得好,请给告诉我,你的鼓励是我工作的动力;如果你觉得不好,那就更应该告诉我了,我会参考你的意见作修改的。我希望能通过这种方法,译出一本配得上原著的书。shhgs2003年9月8日Chapter 6: Reusing Classes6: 复用类Java 最令人心动的特性就是它的代码复用了。但是仅仅拷贝源代码再作修改是不能被称为“革命”的。那是C 之类的过程语言所采用的办法,而且也不怎么成功。就像Java 里的一切,要解决这个问题还要靠类。你可以利用别人写好的、已经测试通过的类来创建新的类,不必一切都从零开始。这么做的诀窍就是,要在不改动原有代码的前提下使用类。本章会介绍两种做法。第一种非常简单:在新的类里直接创建旧的类的对象。这被称为合成(compostion),因为新的类是由旧的类合成而来的。你所复用的只是代码的功能,而不是它的形式。第二种方法更为精妙。它会创建一个新的,与原来那个类同属一种类型的类。你全盘接受了旧类的形式,在没有对它做修改的情况下往里面添加了新的代码。这种神奇的做法就被称为继承(inheritance)。编译器会承担绝大部分的工作。继承是面向对象编程的基石,它还有一些额外的含义,对此我们会在第7章再做探讨。合成与继承在语法和行为上有许多相似之处(这很好理解,因为它们都是在原有类的基础上创建新类)。你会在本章学到这些代码复用的机制。合成所使用的语法实际上我们已经看到很多合成的案例了。只要把对象的reference 直接放到新的类里面就行了。假设,你要创建一个新的类,其中有几个String 对象,几个primitive 数据,以及一个别的什么类型的对象。对于非primitive 的对象,你只要把它的reference 放到类里就行了,但是对于primitive,你就只能直接定义了://: c06:SprinklerSystem.java// Composition for code reuse.import com.bruceeckel.simpletest.*;class WaterSource {private String s;WaterSource() {System.out.println(WaterSource());s = new String(Constructed);}public String toString() { return s; }}

文档评论(0)

wangz118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档