When all we need is a simple code extraction or reuse, inheritance should be used with caution; instead, we should prefer a lighter alternative: class composition.
Important downsides of this approach:
- We can only extend one class.
- When we extend, we take everything from a class
- Using superclass functionality is much less explicit.