One thing is about OOP and other is composition over inheritance. OOP it's not a bad thing, because there is a lot of languages out there, but I'm agree that is better composition over inheritance, to ensure that a class make one thing and everything that need it's passed by argument or constructor.
This concept is so close to the SOLID principles.