Abstract inheritance

1



slide: Section 9.1: Abstract inheritance


The subtype relation

2

  • types -- sets of values
  • the subtype relation -- refinement rules
  • functions -- contravariance
  • objects -- as records

slide: Section 9.2: The subtype relation


Flavors of polymorphism

3

  • typing -- protection against errors
  • flavors -- parametric, inclusion, overloading, coercion
  • inheritance -- incremental modification mechanism

slide: Section 9.3: Flavors of polymorphism


Type abstraction

4

  • subtypes -- typed lambda calculus
  • overloading -- intersection types
  • bounded polymorphism -- generics and inheritance

slide: Section 9.4: Type abstraction


Existential types

5

  • hiding -- existential types
  • packages -- abstract data types

slide: Section 9.5: Existential types


Self-reference

6

  • self-reference -- recursive types
  • object semantics -- unrolling
  • inheritance -- dynamic binding
  • subtyping -- inconsistencies

slide: Section 9.6: Self-reference