Composition involves building complex types by combining objects, offering more flexibility than inheritance. Use it when a class should have, rather than be, another type. For example, instead of `Car` extending `Engine`, `Car` could have an instance of `Engine`, allowing for changing engines without altering the `Car` class structure.
Additional Notes
When should you consider composition over inheritance?