Inheritance promotes code reuse.
This is because the parent/super class contains common data and methods for subclasses to use.
Inheritance reduces the maintenance time/effort (overhead) of a program.
This is becuase only the parent/super class needs to be maintained.
Inheritance can result in complicated code heirarchies of super and subclasses eg the Puppy class inherits from the Dog class, and the Dog class inherits from the Animal class.
In complex examples, this can make code difficult to test.
Inheritance means that two (or more) classes cannot exist independently. They are bound together. They are dependent on each other.
This dependency means that a change in the parent/super class may have unwanted consequences in subclasses.
For further reading, here is a useful page discussing both Interitance (IS-A) and Aggregation (HAS-A).