协议,就是一些规定。当一个类遵循了协议之后,它就必须满足协议所规定的内容。
使用协议的好处就是,以后我们可以面向协议编程。我们写的同一段代码可以针对不同的类型使用,只要这个类型遵循了我们所定义的协议。
协议定义语法
protocol SomeProtocol {
// protocol definition goes here
}
类型实现协议的语法。类型可以是类、结构体、枚举类。协议写在父类的后面,用逗号分开。如果有多个协议,也用逗号分开。
class SomeClass: SomeSuperclass, FirstProtocol, AnotherProtocol {
// class definition goes here
}
协议里面可以定义一些实例属性或类型属性,那么遵循这个协议的类型就必须提供这些属性。可以是用存储属性或计算属性提供。
假如协议里面定义的属性是可以读写的。那么类型必须提供可读写的属性。如果协议定义只读的,那么类型里面可以是读写的。
protocol FruitProtocol {
static var name: String {get}
var price: Int {set get} //set 和 get 没顺序要求
}
class Apple: FruitProtocol {
static var name: String = "apple"
var price: Int {