Java in a Nutshell, second edition by David Flanagan Here are the changes that were made in the 3/99 reprint: {40} The following footnote was added near the bottom of the page: Unless the program itself exits with \f(CWSystem.exit()\fR. Put this footnote at the end of the following sentence: The statements of a finally block are guaranteed to be executed, regardless of how the code in the try block exits. {70} line 5: the statement, "static methods cannot be overridden" is not true; they can be overridden. >From the author: The statement is correct; however, it could be clarified as follows: replace the current text: "static methods cannot be overridden, so..." with: \f(CWstatic\fP methods, by their very nature, are not inherited, and thus cannot be overridden. Thus... {73} Remove the fourth paragraph (the one that starts "There is an important point..." and replace it with: There is an important point to make about subclass access to \f(CWprotected\fR members. A subclass inherits the \f(CWprotected\fR members of its superclass, but it can only use those members through instances of itself, not directly in instances of the superclass. Suppose, for example, that \f(CWA\fR is a \f(CWpublic\fR class that defines a \f(CWprotected\fR field \f(CWf\fR and a \f(CWprotected\fR method \f(CWm()\fR. Now, suppose that \f(CWB\fR is a subclass of \f(CWA\fR defined in a different package. \f(CWB\fR inherits the field \f(CWf\fR and the method \f(CWm()\fR from \f(CWA\fR, and the methods of \f(CWB\fR can refer to the inherited field and method with expressions like \f(CWf\fR, \f(CWm()\fR, \f(CWthis.f\fR, and \f(CWthis.m()\fR. However, if a method in \f(CWB\fR creates an instance \f(CWa\fR of class \f(CWA\fR, it \fIcannot\fR use the field \f(CWf\fR and the method \f(CWm()\fR of that object. That is, the class \f(CWB\fR cannot use expressions like \f(CWa.f\fR and \f(CWa.m()\fR. ("\f(CW" and "\fR" indicate that the intervening text should appear in constant width font.) {105} Remove the first paragraph of the "Nested Top-Level Classes and .class Files" section and replace it with: When you compile the \fILinkedList.java\fR file shown in Example 5-1, you'll find that three class files are generated. The first two are named \fILinkedList.class\fR and \fILinkableInteger.class\fR, as expected. The third, however, is named \fILinkedList$Linkable.class\fR. The \f(CW$\fR in this name is automatically inserted by the Java compiler. ("\fI" and "\fR" indicate that the intervening text appears in italic.) {382} Figure 23-1 should say "java.util" instead of "java.io" in the bottom-left dotted rectangle. Note that the rectangle above that correctly says "java.io"