首页 > 试题广场 >

Swift声明一个静态属性或静态函数可以使用static来修

[问答题]

Swift声明一个静态属性或静态函数可以使用static来修饰。这是一个结构体的例子:

struct Sun { static func illuminate() {}
}

对于类,可以使用static或class来修饰。他们可以达到同样的目标,但实际上他们是不同的。你能解释他们有什么不同吗?

推荐

使用static声明的一个静态属性或者方法并不可被覆盖override(子类覆盖父类的方法)。

·使用class就可以覆盖。

当用在类里的时候,static相当于class final

比如在下面这段代码中你如果覆盖illuminate()编译器就会报错

class Star { class func spin() {} static func illuminate() {}
}class Sun : Star { override class func spin() { super.spin()
  } override static func illuminate() { // error: class method overrides a 'final' class method super.illuminate()
  }
}

Question #5 - Swift 1.0 or later

可以使用扩展添加存储属性吗?

发表于 2018-07-12 20:36:03 回复(0)