我有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"
最后一行打印出“我是A类”,我的意思是打印出“我是B类”,因为实例类型是B类。我应该怎样更改A类函数中的代码“print ()“让A级实现实例类型为B并打印出”我是B级“? 如果我删除“class”前缀他的函数“getName()”,那么它会做我要求的,但是如何对类函数做同样的事情?
答案 0 :(得分:1)
使用dynamicType
。
class A {
func print() -> Void {
println(self.dynamicType.getName())
}
}
Swift Language Reference中的示例与您的示例类似,顺便提一下。