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

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.