Назад к вопросам
Суши Вок
Junior — Middle
68
Можно ли прямо инстанцировать объект протокола в языке программирования?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Swift (язык программирования для iOS) протоколы описывают набор требований (методов, свойств), которые должен реализовать тип. Нельзя напрямую создать экземпляр протокола, так как протокол сам по себе не содержит реализации.
Однако, если есть класс или структура, которые реализуют протокол, можно создать экземпляр этого типа и работать с ним через ссылку на протокол.
Пример:
protocol Drawable {
func draw()
}
class Circle: Drawable {
func draw() {
print("Рисуем круг")
}
}
let shape: Drawable = Circle() // создаём экземпляр класса, реализующего протокол
shape.draw() // вызов метода протокола
Если нужно иметь объект, который соответствует протоколу, но не хочется создавать конкретный класс, можно использовать типы-обёртки или анонимные реализации, но прямой инстанциации протокола нет.