If used properly, it's fine. The problem is that it's harder to use properly than it seems.
If you want to make a subclass that doesn't have all of the behaviors and properties of the base class, you shouldn't be using inheritance:
In some OOP-heavy languages you have the inheritance hammer and make very object extend Nail, but not everything can be modeled as a class hierarchy no matter how hard you try: