Можно ли прямо инстанцировать объект протокола в языке программирования?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

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

Пример:

protocol Drawable {
    func draw()
}

class Circle: Drawable {
    func draw() {
        print("Рисуем круг")
    }
}

let shape: Drawable = Circle() // создаём экземпляр класса, реализующего протокол
shape.draw() // вызов метода протокола

Если нужно иметь объект, который соответствует протоколу, но не хочется создавать конкретный класс, можно использовать типы-обёртки или анонимные реализации, но прямой инстанциации протокола нет.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее