如何覆盖子类中的静态变量?

ero*_*ppa -2 swift

我有一个超级班

class asuper{
 static var x = ""
 static func printX{
  print(x)
 }
}
Run Code Online (Sandbox Code Playgroud)

但是我有一个想要更改值 x 的子类,我该怎么做?

class asubclass {
 static fucn newPrintX{
   //want to ensure X is changed before any static method uses x
   print(x + "sub")
 }
}
Run Code Online (Sandbox Code Playgroud)

Luc*_*tti 6

你不能

正如其他人已经说过的,您不能覆盖静态方法或属性。

使用class替代

因此,不能覆盖静态存储的属性。

然而,静态计算属性和方法可以更新为类成员(而不是静态成员)。

它们仍然属于类型本身,购买您将能够在子类中被覆盖。

class Animal {

    class var typeName: String { "Animal" }

    class func saySomething() {
        print("I'm an Animal")
    }
}

class Dog: Animal {

    override class var typeName: String { "Dog" }

    override class func saySomething() {
        print("I'm a Dog")
    }
}
Run Code Online (Sandbox Code Playgroud)