> Что происходит, если убрать реализацию протокола в наследнике в Swift? (iOS, Swift)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: FullStack

Стек: iOS, Swift

> Пример ответа

Если убрать реализацию протокола в наследнике в Swift, то компилятор начнет искать реализацию требований протокола в родительском классе. Если родительский класс их реализует, код скомпилируется успешно, и наследник унаследует эту реализацию. Если же родительский класс не реализует протокол, возникнет ошибка компиляции: наследник не соответствует протоколу.

Важно помнить, что протоколы - это контракты: класс, объявленный как соответствующий протоколу, обязан предоставить реализацию всех его требований (если они не имеют дефолтной реализации в расширении протокола). Удаление реализации в наследнике не нарушает контракт, если реализация уже есть в суперклассе. Однако если наследник переопределял методы протокола и вы их убрали, то будет использоваться версия из родителя.

Пример:

SWIFT
protocol Drawable {
func draw()
}
class Shape: Drawable {
func draw() { print("Shape") }
}
class Circle: Shape { } // Наследует draw() от Shape - OK
class Triangle: Drawable { } // Ошибка: не реализован draw()

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью