I would still use inheritance to create a basic addComponent/componentFunction class. I don't think inheritance is meant to be used for creating as much sub-classes as possible.
But as with all software design, it is important to know where to draw the line. Where have you inherrited all you can?
What you describe is pretty much inheritance vs composition. A tradeoff as old as oop.