The solution comes from the two ways we have been using inheritance from
the beginning of the book.
Reuse of code. Certain methods, call foundation methods, are defined
in a general purpose class.
These provide functionality that is common to many applications.
Reuse of concept. Other methods, called specialization methods, are
defined in a parent class, but overridden in child classes.
These provide the means to specialize an application to a new situation.