Objectives
This section discusses the distinction between
typed and untyped formalisms,
and introduces the various flavors
of polymorphism that may be encountered
in typed programming languages.
It also discusses the interpretation
of inheritance as an incremental
modification mechanism,
leading to the characterization of
inheritance as inclusion polymorphism.
Points to emphasize
- typing -- protection against errors
- flavors -- parametric,
inclusion, overloading, coercion
- inheritance --
incremental modification mechanism
Hints
Polymorphism is essentially a qualification
of types.
In practice, students are familiar with
polymorphism in the form of overloading
and coercion, without perhaps being aware
of it.
The classification of distinct flavors
of polymorphism may serve to characterize
the polymorphism specific to object-oriented languages.
Questions
.so q3
Comments
The notion of inheritance as an
incremental modification mechanism reflects
the incremental nature of object-oriented system development.
This notion is essential to
explain the polymorphic nature of self-reference.