Inheritance allows new classes called derived classes to inherit properties and behaviors from existing classes called base classes. A derived class inherits all features of the base class and can add its own functionality or refine existing functionality. Multiple inheritance allows a derived class to inherit from more than one base class, which provides more flexibility but can also cause ambiguities if base classes contain methods with the same name. Ambiguities must be resolved by specifying which base class method to call using scope resolution operators.