Then what does it mean if "composition over inheritance" is also taught as a good practice in OO?

That's a rule-of-thumb to help beginners in making judgement calls. It doesn't mean inheritance should never be used.

True, but if the defining feature of something is a feature you should use sparingly, doesn't that mean other features are more definitive?