В Swift протоколы служат схожей цели с абстрактными классами в других языках, но с одним принципиальным различием: протоколы могут быть приняты классами, структурами и перечислениями, тогда как абстрактные классы могут наследоваться только другими классами.
protocol Drawable {
func draw()
}
extension Drawable {
func draw() {
print("Default drawing behavior")
}
}
struct Circle: Drawable {} // получает реализацию по умолчанию
class Canvas: Drawable {} // классы тоже могут соответствовать
Один тип Swift может соответствовать нескольким протоколам одновременно, тогда как класс может наследоваться только от одного суперкласса, что делает протоколы более гибким способом для совместного использования поведения между типами.
Новый — ещё не проверен сообществом
Вы