I examine this material in a more Java-centric fashion in Chapter 8 of my book, Understanding Object-Oriented Programming with Java, published by Addison-Wesley in 1998. The text of this chapter is available here both as postscript and as pdf. (Note, these files were produced from the original Latex sources, and differ in appearance from the text in the book).