迅捷协议

63 阅读1分钟

本教程属于Swift系列

协议是一种让不同类型的对象拥有一套共同功能的方式。

一个协议是这样定义的。

protocol Mammal {

}

结构和类可以通过这种方式采用一个协议

struct Dog: Mammal {

}

class Cat: Mammal {

}

一个协议可以定义属性和方法,不提供值和实现,结构/类必须实现它们。

protocol Mammal {
    var age: Int { get set }
    func walk()
}

该属性可以定义为getget set 。如果是get ,该属性必须被实现为只读,有一个getter。

任何采用该协议的类型都必须通过实现这些方法或提供这些属性来符合该协议。

struct Dog: Mammal {
    var age: Int = 0
    func walk() {
        print("The dog is walking")
    }
}

class Cat: Mammal {
    var age: Int = 0
    func walk() {
        print("The cat is walking")
    }
}

结构和类可以采用多种协议。

struct Dog: Mammal, Animal {

}

class Cat: Mammal, Animal {

}

注意,对于类来说,这与定义超类的语法相同。如果有一个超类,把它列为列表中的第一项,放在冒号之后。