On the subject of class inheritance and why it’s awful, I prefer to use the terms “has-a” versus “is-a” when describing a class structure.
“has-a” classes are classes which use other classes, hopefully via dependency injection. “is-a” classes are classes that extend other classes and, as suggested above, can hide complexity and create tightly coupled codebases.
There’s nothing wrong with how you said it, I just fell into the “has-a”/”is-a” convention awhile ago, and found it useful for me. Great article, BTW!