Swift class 函数继承问题
Swift class function inheritance issue
我对 Swift class 函数继承有疑问,这里是代码示例:
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.[=23中的代码应该怎么改=]一个函数"print()"让classA实现实例类型为B并打印出来"I'm class B"?
如果我删除函数 "getName()" 的 "class" 前缀,那么它将执行我要求的操作,但是如何对 class 函数执行相同的操作?
使用dynamicType
.
class A {
func print() -> Void {
println(self.dynamicType.getName())
}
}
顺便提一句,Swift Language Reference中的示例与您的相似。
我对 Swift class 函数继承有疑问,这里是代码示例:
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.[=23中的代码应该怎么改=]一个函数"print()"让classA实现实例类型为B并打印出来"I'm class B"? 如果我删除函数 "getName()" 的 "class" 前缀,那么它将执行我要求的操作,但是如何对 class 函数执行相同的操作?
使用dynamicType
.
class A {
func print() -> Void {
println(self.dynamicType.getName())
}
}
顺便提一句,Swift Language Reference中的示例与您的相似。