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() } }
可以使用扩展添加存储属性吗?
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
使用static声明的一个静态属性或者方法并不可被覆盖override(子类覆盖父类的方法)。
·使用class就可以覆盖。
当用在类里的时候,static相当于class final
比如在下面这段代码中你如果覆盖illuminate()编译器就会报错
Question #5 - Swift 1.0 or later
可以使用扩展添加存储属性吗?