一个类可以从另一个类继承方法、属性和其他的特性。当一个类从另一个类继承的时候,继承的类就是所谓的子
类,而这个类继承的类被称为父类。在Swift 中,继承与其他类型不同的基础分类行为。
在 Swift 中类可以调用和访问属于它们父类的方法、属性和下标脚本,并且可以提供它们自己重写的方法,属性 和下标脚本来定义或修改它们的行为。Swift 会通过检查重写定义都有一个与之匹配的父类定义来确保你的重写是正确的。
类也可以向继承的属性添加属性观察器,以便在属性的值改变时得到通知。可以添加任何属性监视到属性中,不 管它是被定义为存储还是计算属性。
定义一个基类
任何不从另一个类继承的类都是所谓的基类。
没有指定特定父类的类都会以基类的形式创建。
子类
子类是基于现有类创建新类的行为。子类从现有的类继承了一些特征,你可以重新定义它们。你也可以为子类添 加新的特征。
为了表明子类有父类,要把子类写在父类的前面,用冒号分隔:
1 class SomeSubclass: SomeSuperclass {
2 // subclass definition goes here
3 }
子类本身也可以被继承。
重写
子类可以提供它自己的实例方法、类型方法、实例属性,类型属性或下标脚本的自定义实现,否则它将会从父类继承。这就所谓的重写。
要重写而不是继承一个特征,你需要在你的重写定义前面加上 override关键字。
访问父类的方法、属性和下标脚本
你可以通过使用 super前缀访问父类的方法、属性或下标脚本
重写方法
你可以在你的子类中重写一个继承的实例或类型方法来提供定制的或替代的方法实现。
1 class Train: Vehicle {
2 override func makeNoise() {
3 print("Choo Choo")
4 }
5 }
重写属性
你可以重写一个继承的实例或类型属性来为你自己的属性提供你自己自定义的 getter 和 setter ,或者添加属性观 察器确保当底层属性值改变时来监听重写的属性。
重写属性的getter和setter
你可以通过在你的子类重写里为继承而来的只读属性添加Getter和Setter来把它用作可读写属性。总之,你不能把 一个继承而来的可读写属性表示为只读属性。
重写属性观察器
你可以使用属性重写来为继承的属性添加属性观察器。
注意:
你不能给继承而来的常量存储属性或者只读的计算属性添加属性观察器。这些属性的值不能被设
置,所以提供 willSet 或 didSet 实现作为重写的一部分也是不合适的。
也要注意你不能为同一个属性同时提供重写的setter和重写的属性观察器。如果你想要监听属性值 的改变,并且你已经为那个属性提供了一个自定义的setter,那么你从自定义的setter里就可以监听
阻止重写
你可以通过标记为终点来阻止一个方法、属性或者下标脚本被重写。通过在方法、属性或者下标脚本的关键字前
写 final 修饰符(比如 final var , final func , final class func , fianl subscript )。
网友评论