摘要訊息 : 學習 Swift 中的協議.

0. 前言

本文于 2022 年 3 月 18 日进行一次更新和修正. 修正之后本文已经归档, 不再享受更新.

1. 协议的作用

协议是为方法和属性等定义一套规范, 协议是一个描述了方法或者属性的骨架, 并没有具体去实现.

2. 协议的定义

protocol 协议名称 {
    协议内容
}

3. 协议的继承

protocol walking {
    func walk()
}
protocol running : walking {
    func run()
}

4. 类中协议的实现

现在创建一个 sport 类, 让它必须遵循 walkingrunning 协议

protocol walking {
    func walk()
}
protocol running : walking {
    func run()
}

class sport : running {
    var name = "Jonny"
    func walk() {
        print("\(name) is walking!")
    }
    func run() {
        print("\(name) is running!")
    }
}
var handsome = sport()
handsome.walk()
handsome.run()
/* 结果 :
    Jonny is walking!
    Jonny is running!
*/

如果 sport 类中, 并没有遵循 walkingrunning 协议, 其中缺少相关方法和属性, 编译器会报错 :

protocol walking {
    func walk()
}
protocol running : walking {
    func run()
}

class sport : running {
    var name = "Jonny"
    /*func walk() {    // 编译器报错
        print("\(name) is walking!")
    }*/
    func run() {
        print("\(name) is running!")
    }
}