29 swift
与class
var 不同,他们可以在子类中重写,我相信同样适用static
但不幸的是.这是一个例子
public class A {
private static let NAME: String = "A"
}
public class B: A {
private static let NAME: String = "B" //error
}
Run Code Online (Sandbox Code Playgroud)
在我看来,静态意味着与该特定类的关联,所以在上面的例子中B
应该得到它自己的空间来重新定义该变量,因为它只与它相关联B
,我正在恢复,stored properties
除非有人有更好的解决方案.
gdu*_*dub 24
您可以使用计算属性:
class A {
class var Name: String {
return "A"
}
}
class B: A {
override class var Name: String {
return "B"
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
print(A.Name) // "A"
print(B.Name) // "B"
Run Code Online (Sandbox Code Playgroud)
Niv*_*ash 17
如建议的那样,您不能覆盖静态变量,但可以使用类(静态)函数来覆盖.
class A {
class func StaticValue() -> AnyObject {
return "I am a String"
}
}
class B: A {
override class func StaticValue() -> AnyObject {
return 2
}
}
Run Code Online (Sandbox Code Playgroud)