Caio: Why should we prefer Composition over Inheritance? Or why is Composition better than Inheritance? Well this principle saying “prefer Composition over Inheritance” it actually has a name. Well this principle saying “prefer Composition over Inheritance” it actually has a name. In Object Oriented Programming we call it “The Composite Reuse Principle.” And composing objects is often judged better than Inheritance… Because in most languages including Swift… You can’t inherit from multiple classes. You can only inherit from one. Thus, you can’t compose with Inheritance. You can’t achieve class composition with Inheritance. So if you want to compose types and create reusable tiny single-purpose components… Inheritance is not going to help you do that. Mike: Yes, but we have Protocols! Caio: Yes, and Protocols compose much better! Because you can inherit from multiple protocols. And protocols can also inherit from multiple protocols. And since you have protocol extensions… Where you can give protocol implementations… You can compose functionality with Swift protocols.