Swift中的类并不是从一个通用的基类继承而来。
重写
子类可以为继承来的实例方法,类方法,实例属性,或下标提供自己定制的实现。我们把这种行为叫重写。
访问父类的方法:super.someMethod()
访问父类的属性:super.someProperty
重写属性:
重写继承来的实例属性和类型属性,提供自己的getter和setter,或者添加属性观察器。
可以将继承来的只读属性,重写为读写属性,不能讲读写属性重写为只读属性。
你不可以为继承来的常量存储型属性或继承来的只读计算型属性添加属性观察器。这些属性的值是不可以被设置的,所以,为它们提供 willSet 或 didSet 实现是不恰当。 此外还要注意,你不可以同时提供重写的 setter 和重写的属性观察器。如果你想观察属性值的变化,并且你已经为那个属性提供了定制的 setter,那么你在 setter 中就可以观察到任何值变化了。
防止重写:
使用final修饰符。
你可以通过把方法,属性或下标标记为final来防止它们被重写,只需要在声明关键字前加上 final 修饰符即可(例如:final var,final func,final class func,以及 final subscript)。
你可以通过在关键字 class 前添加 final 修饰符(final class)来将整个类标记为 final 的。这样的类是不可被继承的,试图继承这样的类会导致编译报错。