Inheritance allows you to create new classes based on existing classes. This supports code reuse because subclasses can leverage data member definitions and methods available in the superclass. Additionally, you can add new functionality and/or overriding methods to a change the behavior for a specific subclass. This is meant to model inheritance in the physical world.