I think this is one of the most discussed point in Object Oriented design. As suggested in the article, composition is always preferred over inheritance. That doesn't mean that you should never use inheritance. You should where it makes more sense (which can debatable).
There are many advantages of using composition, couple of them are :
- You will have full control of your implementations. i.e., you can expose only the methods you intend to expose.
- any changes in the super class can be shielded by modifying only in your class. Any clients classes which uses your classes, need not make modifications.
- Allows you to control when you want to load the super class (lazy loading)