如题.
示例代码如下:
import Foundation
protocol Sender {}
extension Sender {
func send() { print("default send") }
}
class MqttSender: Sender {
var name = "123"
func send() {
print("MqttSender send")
}
}
let sender: Sender = MqttSender()
// sender 为 Sender 类型, 则调用默认实现
sender.send() // 输出: default send
// sender 转化为 MqttSender 类型, 则调用 MqttSender 重载实现的方法
(sender as? MqttSender)?.send() // 输出: MqttSender send
// 但是: 在不知道 `sender` 实例具体是什么类型的时候(不用 as 进行类型转换)
// 怎么如何调用它的 send 方法. (反射??)
// ...
参照这里:stackoverflow - protocol
Swift 的 protocol 不能实现多态。得用 class。