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