Extending classes can be used to allow for new behaviors, while adhering to common interfaces. While it's not always the best way to organize relationships between objects, there are many situations where extension (sometimes called inheritance) is the most effective way to structure behavior.
In this recipe, we'll see a very simple example of extension.