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.