A base class for the “hero character” is fine, but as an example, the abilities make more sense as components. It should make it easier to maintain (assuming not all the abilities are somehow directly interconnected with each other on every hero) and can allow gameplay features that would be hard to make in a more rigid system. Imagine a character that could copy abilities from other characters.
I don’t have a lot of experience with components and composition programming, so I’m unsure of what this would look like. Do you mean that every unique ability has its own component class? And how would this be integrated with input and the user interface?