Sobes.tech
Back to questions
Junior — Middle
69

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

Companies where asked
Суши ВокСуши Вок

Answer from AI

sobes.tech AI

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

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

Пример:

protocol Drawable {
    func draw()
}

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

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

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