在 Swift 中覆盖一个方法非常容易:
class A {
func innerValue() -> Int { return 5 }
func getInnerValue() -> Int { return innerValue() }
}
class B: A {
override func innerValue() -> Int { return 8 }
}
B().getInnerValue() //returns 8
但是,当我使用class
关键字将innerValue()
声明为静态时,我不知道如何做到这一点:
class A {
class func innerValue() -> Int { return 5 }
func getInnerValue() -> Int {
return A.innerValue() //ok for compiler but returns 5 instead of 8
return self.innerValue() //error: 'A' doesn't have a member named 'innerValue'
return innerValue() //error: Use of unresolved identifier 'innerValue'
}
}
class B: A {
override class func innerValue() -> Int { return 8 }
}
B().getInnerValue()
那么在Swift中是否可能呢?
getInnerValue
是一个类方法,那么self
就是正确的目标。 - mattself.dynamicType
已经变成了type(of: self)
。 - BallpointBen