7 Design subclasses right
This chapter covers
- When to override and when to overload methods
- Type hints and multimethod
- The Liskov Substitution Principle
- Designing classes and subclasses properly with is-a and has-a relationships
- The Favor Composition over Inheritance Principle
- Factory classes
- Using Programming by Contract correctly when designing subclasses
As described in section 1.8, inheritance is one of the main concepts of object-oriented programming. When we create an application with class hierarchies of superclasses and subclasses, we must design the subclasses right to achieve a well-designed application.