Middle+
57
questionbank

В чем отличие протоколов от классов в контексте абстрактных классов?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Протокол определяет набор требований к типу (методы, свойства, инициализаторы), но не предоставляет их реализации. Класс может реализовывать один или несколько протоколов.

Абстрактный класс (в Swift это эмулируется через классы с нереализованными методами или через протоколы) представляет собой базовый класс, от которого наследуются другие классы. Он может содержать как абстрактные (нереализованные), так и реализованные методы и свойства.

Отличия:

ПризнакПротоколАбстрактный класс (эмуляция в Swift)
Множественное наследование/реализацияТип может реализовывать множество протоколовКласс может наследоваться только от одного класса
Хранение состоянияNão pode ter stored propertiesPode ter stored properties
Реализация методовНе предоставляет реализацииМожет содержать реализованные методы
Создание экземпляровНельзя создать экземпляр протоколаМожно создать экземпляр абстрактного класса (если нет абстрактных методов, требующих реализации)