When a subclass inherits from a subclass, it typically inherits both the implementation and the interface. This, in turn, means that you’re forced to accept both as constraints on your class. With aggregation, you get to choose either implementation or interface, or both — but you’re not forced into either .6 Kas 2008