器会接手处理并释放内存的。这部分深入分析了垃圾回收器及其与众不同 之处。最后,它对初始化作了一个详细的考察:成员数据的自动初始化 成员数据的赋值初始化,初始化的顺序, static(静态)初始化,以及数组 的初始化 第5章:隐藏实现 CD ROM上有相关课程)。本章介绍如何封装代码,并且解释了为什么 类库中的某些部分会被公之于众,而有些部分却被隐藏起来了。这部分内 容从讲解ρ ackage和 import这两个关键词入手。这两个关键词能进 行文件级别的封装,主要用于类库的构建。接下来的课题是目录路径与文 件名。本章剩余的部分探讨了 public, private和 protected这三个 关键词和 package访问权限( package access)的概念,以及在不同的 上下文环境中各种访问权限所表示的意义 第6章:复用类 ( CD ROM上有相关课程)。最简单的复用类的方法是合成 ( compostion),也就是将对象嵌入新的类里。然而,合成并不是唯 的,使用已有的类来创建新类的方法。实际上所有的OOP语言都有继承 的概念。这是一种能为已有的类添加新功能(也可以修改它——这是第7 章的主题)的方法。通常用继承来复用代码的时候,不需要改动“基 类”,而是通过对它进行修补来产生要用的东西。在本章,你会学到 Java是如何用合成和继承来复用代码的,以及它们是如何运用的。 第7章:多态性 ( CD ROM上有相关课程)。多态性是OOP的基石,如果你只靠自学 可能要花九个月时间才能发现和理解这个概念。在本章中,通过许多小 的、简单的例子,你会看到如何通过继承来创建一个类系( a family of types),并且使用这个类系的基类来操控属于这个类系的对象。Java的 多态性能让你以整体的角度来看待这个类系的所有对象,也就是说绝大多 数代码不依赖于某个具体的类型。这能使程序更为灵活,于是编程和维护 代码也变得更加简单和便宜了。 第8章:接口( nterface)和内部类( nner Class) Java为设计和关系复用提供了一种特殊的工具:接口( interface),这是 一种纯粹的对象接口的抽象。 interface不仅仅是抽象类( abstract class)的极端形式,它还能是C++里面的“多重继承”的一个变例。用 它创建类之后,你就可以把它上传到多个基类 乍看上去,内部类就像是一种简单的隐藏代码的机制;也就是把一些类放 在另一些类里。但是,你会发现内部类并不是那么简单的;它知道包在它 外面的那个类,并且还能同它通信。有了内部类,你就可以写出更为优 第6页共18页
shhgs@wgqqh.com 6 ✁ ✂ 18 ✁ /ºÊ;]¢£kìV( |t,YZ[/j§µX u]bA¥fN1,3×êë(¥ñ(ý fN ñ(lfNfN(sta ti c (S)fNEjW (fN 5 (CD ROM Jm>ºâ) ûÄOP_££,nZ %+*(:̺Ku)µàmÌ 9Q, ì R©£ package i m port e×p³t; e×p³;Ú þ Æç (OPÃ%)%+(ü@ÊQ(º7 ÆÑ ûo(l, pu bl i cpri vate protected L× p³ p a cka g e 6 (p a cka g e a ccess) (ÖKEjFX( J ä*J6 D:(¹^ 6 (CD ROM Jm>ºâ)bST(O%(µZ (compostion)[¥,tô(%ËàZX3 (çôm(%Q@ô%(µñ>JDm( OOP ÆmöR (ÖK 3;ôm(%äô; ([ÝEïðA 7 û(Ã7) (µ·öRQO_(MXî%ð Í r %Ïà^¥AÚþï7Q0%(ª«F û¡ºEg Ja va ÄZöRQO_(EjA*ÄL( 7 !"# (CD ROM Jm>ºâ)VSQ OOP (rÄÅ¡óýE Ý;%×4d;ìí¢£ ×ÖKF û*^ÐV» (r ST(¡º<gÄ^öRQ@3×% (a fam i l y of typ es)ç ×%(r%Q) ×%(¥,Ja va ( VSQ;Ç¡E¤5(¤zQ<\ ×%(Dm¥,[$ÂV _XCD):×45(%M ;çâUV)áâ _[jäST, 8 $% ( Interface) &' ( Inner Class) Ja va abOIJ,3X(y4ÊM (interface) 3(¥,ÊM(N,i n terface X33N,%(a b stra ct cl a ss)(É´A; C+ + ˶(Í VöRÏ(3×j A@%u¡ÝEPAJÔgV×r% <JÏì%}3ST( _(¡ [P3Ì%k F3Ì%Ë¡ºìíì%XYZST( A UFA ½¶(Y×%;AÖm,ì%¡ÝE«!
雅、清晰的代码。然而对于绝大多数人来说,内部类还是一种新的概念, 要把它熟练地运用到设计中去还需要时间。 第9章:用异常( Exception)处理错误 Java的基本哲学就是,要让有问题的代码根本没有机会运行。编译器会 尽可能地捕捉错误,但有些问题——也许是程序员的错,也许程序正好好 地运行着,但是其它什么地方出了问题——只能到程序运行的时候才能被 发现并处理。Java有一种能处理程序运行时所发生的所有问题的“异常 处理( exception handling)”机制。本章会讲解Java的try, catch throw, throws,以及 finally关键词的工作机理,以及何时抛出异 常,捕获异常之后又应该做些什么。此外,你还会看到Java的标准异 常,如何创建你自己的异常,构造函数里面碰到异常之后又该怎么做,以 及异常处理程序是如何发现异常的。 第10章:检测类型 Java的运行时类型识别(run- time type identification缩写为RTTI)能 让你在只持有基类的 reference的情况下,找出对象的准确类型。通常 情况下,你会故意忽略对象的准确类型,然后让Java的动态绑定机制 (就是多态性)来实现这个类的正确行为。但是,有的时候,能够准确地 知道这个对象是什么类型的是非常有用的。通常是因为,你要利用这种信 息来更为有效地进行一些特定情况的操作。本章还会介绍Java的 reflection机制。此外还包括,为什么要有RTTI和 reflection,如何使 用,以及什么情况下应该不使用RTTI。 第11章:对象的集合 如果程序只处理数量有限,且寿命可知的对象,那么这个程序是相当简单 的。总之,程序总是在不断地创建对象,但是具体是在什么时候,只有到 程序运行的时候才能知道。此外,不到运行时你是不会知道到底需要创建 多少对象,甚至是什么类型的对象。要解决这一普遍的编程难题,你必须 能够随时随地创建任意数量的对象。本章深入探讨了Java所提供的各种 容器类库。这些类库就是用来保存待处理对象的,它包括简单的数组,以 及更为复杂的像 Array List和 Hash Map之类的容器(数据结构)。 第12章: Java i/o系统 从理论上讲,所有程序都可以分成三个部分:输入,处理,和输出。也就 是说I/O(输入/输出)是程序的重要组成部分。在本章中,你会学到Java 所提供的各种用以读写文件,内存块,以及控制台的类。然后是Java I/O架构的演进以及JDK1.4中的“新”I/O(nio)。此外,本章还演 示了如何使用Java的对象序列化( object seria∥ ization)将一个对象 “流”化(这样就把它能放进磁盘或是通过网络进行传输),然后再重 建。接下来会讲解 Java archive(JAR)文件格式所使用的Java的压缩 第7页共18页
shhgs@wgqqh.com 7 ✁ ✂ 18 ✁ r !¡(_à¥)ÂVªQ$ì%3ô(ÖK %PA½rLgab*Ïî%4 9 () ( Excepti on ) *+, Ja va (r ¢E%Çm67(_K m¡ºLþá/º ©Ý;r£¤^_mÌ67[Ðâ(^[Ðâ rLþ.§AnZrµ!,67ó;gâLþ(Md; ìí]¢Ja va m3;]¢âLþDì0(Dm67(Í \· ]¢(exception handling)Ï¡ ûº©£ Ja va ( trycatch th rowth rowsEj fi n al l y p³(y1¡¢Ej¥!\ ·£g\·uüvwTÌnZò½¡º<g Ja va (Ô\ ·Ä@¡ý þ(\·üÚ˶~g\·uüwÕZTE j\·]¢âÄìí\·( 1 0 -. / Ja va (Lþ%MD (ru n -ti m e typ e i den tifi ca ti on ¦« RTTI ); Ç¡FóÄmr%( referen ce (·é!¥,(Ô§%M· ·¡º¨¹©ª¥,(Ô§%MÇ Ja va ( S«O¡ (VSQ) Qñí ×%(§þm(M;¬Ô§r ×¥,nZ%M(¯·m(·æ¡% Ö îQmØrÚþ3ÌXO·(1 ûº Ja va ( reflection ¡ò½U#nZ%m RTTI refl ecti on Äç EjnZ·vwXç RTTI 1 1 012 ÄÅâó]¢m ®¯Ý (¥,YZ ×â> ST (ÜuâÜFXxr@¥,45FnZMómg âLþ(Md; ò½XgLþ¡Xº ghî%@ V²¥,¾¿nZ%M(¥,%£N 3°(áâU7¡gh ;¬¸¸r@±¹(¥, û|tl, Ja va DIJ(J R/%+ Ì%+Q&V\]¢¥,(AU#ST(WE jOP(} ArrayLi st H ash M ap u%(R/(ñÝü ) 1 2 Java I/O 34 ¢mJ©DmâÆÝELײt]¢²![ $ I /O(²t/²!)â(%WF û*¡ºEg Ja va DIJ(JE« ÆìV³Ej´(% Ja va I /O µü(¶ÚEj JD K 1 .4 *(Í ôÏI /O (n i o)ò½ û¶ ,Äç Ja va (¥,·N (object serialization) 3×¥, Í 9ÏN ( ¦PA;kÚ¸¹2^HcÚþÔ²)Á @ÊQº©£ Ja va ARch i ve (JAR) Æè´Dç( Ja va (¦