Наследование даёт одну иерархию и shared implementation через superclass; протокол — контракт, который реализуют любые типы, включая value types.
Разбор
- Множественное наследование классов запрещено; протоколов — можно несколько.
- Протоколы лучше для тестирования (моки) и модульности.
- Класс нужен, когда нужна identity, deinit, ObjC runtime.
- Частый стиль: final class + протоколы, или struct + протоколы.
Итог
Протоколы масштабируют абстракцию без жёсткой классовой иерархии.