Reasons to Use Class Hierarchies
Subclasses inherit structure (via slots)
Subclasses inherit behavior (via methods)
Multiple inheritance supports modular reuse without copying
- write labeled-object once and mix it in to labeled-circle and labeled-rectangle
Abstract classes are classes in the hierarchy that you never instantiate
- providing partial but not complete behavior (e.g. labeled-object)