June 2005
Beginner to intermediate
312 pages
6h 24m
English
The puzzles in this chapter concern inheritance, overriding, and other forms of name reuse.
In this program, a subclass field has the same name as a superclass field. What does the program print?
class Base { public String className = "Base";}class Derived extends Base { private String className = "Derived";}public class PrivateMatter { public static void main(String[ ] args) { System.out.println(new Derived( ).className); }}
A superficial analysis of the program might suggest that it should print Derived, because that is what is stored in the className field of each Derived instance. A deeper analysis suggests that class Derived won’t ...