Composition provides better flexibility and encapsulation.
In a store model, a Cart can use composition to hold CartItems, allowing dynamic changes without altering Cart's structure. In contrast, inheritance can lead to rigid hierarchies and tightly coupled systems.
Additional Notes
Why use composition over inheritance in object design?