注意:Swift 中的类并不是从一个通用的基类继承而来。如果你不为你定义的类指定一个超
类的话,这个类就自动成为基类。
注意:不像 Objective-C,在 Swift 中,初始化器默认是不继承的,见初始化器的继承与重
写
注意:子类只允许修改从超类继承来的变量属性,而不能修改继承来的常量属性。
一个类的实例方法会被这个类的所有子类继
承。
重写(Overriding)
override 关键字会?醒 Swift 编译器去检查该类的超类 (或其中一个父类) 是否有匹配重写
版本的声明。这个检查可以确保你的重写定义是正确的。
你可以重写继承来的实例属性或类属性,?供自己定制的 getter 和 setter,或添加属性观察
器使重写的属性观察属性值什么时候发生改变。
你可以?供定制的 getter(或 setter)来重写任意继承来的属性,无论继承来的属性是存储
型的还是计算型的属性。 子类并不知道继承来的属性是存储型的还是计算型的, 它只知道继
承来的属性会有一个名字和类型。你在重写一个属性时,必需将它的名字和类型都写出来。
这样才能使编译器去检查你重写的属性是与超类中同名同类型的属性相匹配的。
你可以将一个继承来的只读属性重写为一个读写属性,只需要你在重写版本的属性里?供
getter 和 setter 即可。但是,你不可以将一个继承来的读写属性重写为一个只读属性。
注意:如果你在重写属性中?供了 setter,那么你也一定要?供 getter。如果你不想在重写
版本中的 getter 里修改继承来的属性值, 你可以直接返回 super.someProperty 来返回继承
来的值
注意:如果你在重写属性中?供了 setter,那么你也一定要?供 getter。如果你不想在重写
版本中的 getter 里修改继承来的属性值, 你可以直接返回 super.someProperty 来返回继承
来的值
重写属性观察器(Property Observer)
你可以在属性重写中为一个继承来的属性添加属性观察器
注意:不可以为继承来的常量存储型属性或继承来的只读计算型属性添加属性观察器,这些属性值是不可变的
不能同时提供重写setter和属性观察器
防止重写
可以将方法、属性或附属脚本标记为final来防止被重写。在声明的关键字前加@final
你可以通过在关键字 class 前添加@final 特性 (@final class) 来将整个类标记为 final 的,
这样的类是不可被继承的,否则会报编译错误。