我有一个关于 Swift 类函数继承的问题,这里是一个代码示例:
class A {
class func getName() -> String {
return "I'm class A"
}
func print() -> Void {
println(A.getName())
}
}
class B : A {
override class func getName() -> String {
return "I'm class B"
}
}
var b = B()
b.print() //This line prints out "I'm class A"
最后一行打印出“I'm class A”,我的本意是打印出“I'm class B”,因为实例类型是class B。我应该如何更改class A函数“print”中的代码()”让类A意识到实例类型是B并打印出“我是类B”? 如果我删除函数“getName()”的“类”前缀,那么它将执行我要求的操作,但如何对类函数执行相同的操作?
最佳答案
使用dynamicType
。
class A {
func print() -> Void {
println(self.dynamicType.getName())
}
}
Swift Language Reference 中的示例顺便说一句,和你的很相似。
关于inheritance - Swift类函数继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28018948/