A new class can be composed of any number of other objects of any type in any way that implements the desired functionality of the new class. This concept is called composition because new classes are composed from existing classes. Combinations bring great flexibility. Creating a new class has similar functionality to the base class, and when the source class changes, the derived class reflects those changes. Using inheritance everywhere leads to a design that is difficult to use and overly complex. Inheritance is inflexible.