"NumberExample" contains the main method for this program.

This example illustrates the use of abstract classes.  An abstract class
can include method signature definitions which do not contain any code.
Classes which extend the abstract class must supply an appopriate 
definition.

In this example note how the abstract Number superclass defines an
"add" method that operates on any two instances of "Number".  This means
that implementations (for example in "Integer") must be aware of all of
the possible kinds of number as well as just their own kind.  For 
example, the "Integer" class needs to contain code for adding a "Real"
to an "Integer" as well as for adding two "Integers".

Similar examples are seen in the standard Java libraries in (e.g.) the
"equals" method on java.lang.Object.
