Swift 中的类并不是从一个通用的基类继承而来的。如果你不为自己定义的类指定一个超类的话,这个类就会自动成为基类。
重写属性观察器
你不可以为继承来的常量存储型属性或继承来的只读计算型属性添加属性观察器。这些属性的值是不可以被设置的,所以,为它们提供
willSet
或didSet
实现也是不恰当。 此外还要注意,你不可以同时提供重写的 setter 和重写的属性观察器。如果你想观察属性值的变化,并且你已经为那个属性提供了定制的 setter,那么你在 setter 中就可以观察到任何值变化了。
防止重写
你可以通过把方法,属性或下标标记为
final
来防止它们被重写,只需要在声明关键字前加上final
修饰符即可(例如:final var
、final func
、final class func
以及final subscript
)。任何试图对带有
final
标记的方法、属性或下标进行重写的代码,都会在编译时会报错。在类扩展中的方法,属性或下标也可以在扩展的定义里标记为final
。可以通过在关键字
class
前添加final
修饰符(final class
)来将整个类标记为 final 。这样的类是不可被继承的,试图继承这样的类会导致编译报错。
网友评论