8. Classier Puzzlers
The puzzles in this chapter concern inheritance, overriding, and other forms of name reuse.
Puzzle 66: A Private Matter
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); }}
Solution 66: A Private Matter
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 ...
Get Java™ Puzzlers: Traps, Pitfalls, and Corner Cases now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.