【发布时间】:2018-05-20 12:44:40
【问题描述】:
我已经开始阅读一本关于 Swift 中面向协议编程的教科书。当我在操场上写代码时,我注意到书中的一种方法使用了关键字“静态”。据我了解,静态方法意味着该方法将由类型本身调用,而不是由该类型的特定实例调用。另外我的理解是,静态方法不能被覆盖。
由于协议在声明时只是方法签名,所以我认为看到使用关键字“static”有点奇怪,因为无论如何我们都必须实现函数的存根(stub)。
要开始以抽象的方式思考,我想知道协议方法是否意味着在 Swift 中被覆盖,或者使用关键字“静态”是否只是使其只有类型本身可以调用方法与调用该方法的实例相比?
protocol YourProtocol {
//property requirements that types that conform to this protocl MUST implement
var gettableProperty: String { get }
var gettableSettableProperty: Int { get set }
//method requirements that types that conform to this protocol MUST implement
func someMethod(parameter1: Double) -> String
static func staticMethod() -> Float
}
【问题讨论】:
标签: swift protocols static-methods