Swift 面试题
目录

Swift 中什么是协议 (Protocol)?

· 约 4 分钟读完 · 第 102 / 196 章

推荐答案

在 Swift 中,协议(Protocol)是一种定义方法、属性和其他需求的蓝图。它类似于其他编程语言中的接口(Interface)。协议可以被类、结构体或枚举采用(遵循),以提供这些方法或属性的具体实现。通过协议,Swift 实现了面向协议编程(Protocol-Oriented Programming),这使得代码更加灵活和可复用。

本题详细解读

协议的定义

协议通过 protocol 关键字来定义。协议可以定义方法、属性和其他需求,但不提供具体的实现。遵循协议的类、结构体或枚举必须实现这些方法和属性。

协议的遵循

类、结构体或枚举可以通过在类型声明后加上 : ProtocolName 来遵循协议。遵循协议的类型必须实现协议中定义的所有方法和属性。

协议中的属性

协议可以定义属性,并指定它们是只读的(get)还是可读写的(get set)。遵循协议的类型必须提供这些属性的具体实现。

协议中的方法

协议可以定义实例方法和类方法。遵循协议的类型必须实现这些方法。

协议的继承

协议可以继承其他协议,从而组合多个协议的需求。遵循子协议的类型必须同时满足父协议和子协议的所有需求。

协议的扩展

协议可以通过扩展(extension)来提供默认实现。这使得遵循协议的类型可以选择性地实现这些方法,或者直接使用默认实现。

协议作为类型

协议可以作为类型使用,这意味着你可以将协议作为函数参数、返回值或变量类型。这使得代码更加灵活,因为你可以使用任何遵循该协议的类型。

协议的关联类型

协议可以使用关联类型(associatedtype)来定义泛型需求。这使得协议可以适用于多种类型。

协议的组合

你可以使用 & 符号将多个协议组合在一起,形成一个复合协议。遵循复合协议的类型必须同时满足所有组合协议的需求。

通过以上内容,你可以全面理解 Swift 中协议的概念及其使用方式。