Inheritance allows classes to inherit common properties from existing classes, known as base or super classes. This creates new subclasses that extend the functionality of the parent class. There are three main types of inheritance: single inheritance where a subclass extends a single parent class, multiple inheritance where a subclass inherits from more than one parent class, and multi-level inheritance where a subclass inherits from another subclass, which itself inherits from a parent class.