Extend Component or Node?

I want to create some custom objects that have code associated with them for obvious reasons. It’s not clear to me if I should extend node (or the specific node type I need) for these objects, or if I should extend component and add that component to those objects?

For example, I want to create many ball objects that changes colors upon hitting a wall.

Node or even Sprite depending how you make your balls.