verloading is a special case of the more general concept of polymorphism, from the
Greek meaning ‘having many forms’. There are three types of polymorphism: operation,
inclusion, and parametric (Cardelli and Wegner, 1985). Overloading, as in the previous
example, is a type of operation (or ad hoc) polymorphism. A method defined in a
superclass and inherited in its subclasses is an example of inclusion polymorphism.
Parametric polymorphism, or genericity as it is sometimes called, uses types as parameters in generic type, or class, declarations. For example, the following template definition: