Skip to content

Polymorphism (Substitutability)

Code that depends on abstract behavior rather than concrete implementation can work with any implementation satisfying that behavior, enabling extension without modification.

Tension Addressed

Flexibility vs. Safety

Recognizable As

Interface types, protocol conformance, duck typing, generic parameters, virtual dispatch, plugin architectures

Canonical Sources

Barbara Liskov, "Data Abstraction and Hierarchy" (1987); Alan Kay, early Smalltalk papers (1970s); Cardelli & Wegner, "On Understanding Types, Data Abstraction, and Polymorphism" (1985)

Transfers To

API Design (version compatibility), Distributed Systems (protocol conformance), Testing (mock objects), Hardware (instruction set compatibility)

Sub-concepts: - Subtype polymorphism: Different types share common interface - Parametric polymorphism: Operations work uniformly across types - Ad-hoc polymorphism: Same operation name, different implementations per type