【发布时间】:2014-12-24 12:45:28
【问题描述】:
Swift 中没有抽象类。
人们有替代方法来拥有类似的机制。但他们没有回答我的问题。如何构建具有相同功能和不同功能的类族?
Abstract classes in Swift Language 建议我们使用协议而不是抽象基类。但是协议不是我们可以编写函数体的地方,因此对于每个子类中的相同函数,我们必须编写与子类编号相同的函数体。
我想要的是这样的:
protocol Animal : class {
func run()
var legs : [Leg] { get }
// this method is invalid in swift protocol
// as protocol methods must have no bodies.
// Instead, the same method will be repeated
// in every subclasses
func legCount() -> Int {
return self.legs.count
}
}
class Dog : Animal {
func run() {}
var legs : [Leg]
}
class Bird : Animal {
func run() {}
var legs : [Leg]
}
【问题讨论】:
标签: design-patterns swift abstract-class virtual-functions