15-312 Foundations of Programming Languages
Lecture 22: Inheritance and Subtyping

In this lecture we look at the relationship between inheritance and subtyping in more detail. First, we look at the tradeoffs between structural subtyping (the form of subtyping we have studied in functional languages) and by-name subtyping (the form of subtyping that is more common in object-oriented languages). Next, we look at the differences between subtyping and inheritance, and why many object-oriented languages merge the two. Finally, we look at the fragile base class problem, a breach of modularity that can occur due to the open recursion supported by the semantics of inheritance.

[ Home | Schedule | Assignments | Software | Resources ]

Frank Pfenning