Inheritance allows classes to inherit properties and characteristics from other classes, called base classes. There are different types of inheritance including single, multiple, multilevel, and hierarchical inheritance. Inheritance is useful for code reuse - for example, creating subclasses for different vehicles like cars, trucks, and buses that all inherit common methods from a base Vehicle class, avoiding duplicating code. Inheritance can be public, protected, or private depending on which members need to be accessible to subclasses.