Swift5.1继承

13.继承

  • 重写

    1.重写:⼦类可以为继承来的实例方法,类方法,实例属性,类属性,或下标提供⾃己定制的实现。我们把这种⾏为叫重写。如果要重写某个特性,你需要在重写定义的前面加上 override 关键字
    
    2.访问超类的方法,属性及下标
    在合适的地方,你可以通过使用 super 前缀来访问超类版本的方法,属性或下标:
    - 在方法someMethod()的重写实现中,可以通过 super.someMethod()来调用超类版本的someMethod()方法。
    - 在属性 someProperty 的 getter 或 setter 的重写实现中,可以通过super.someProperty 来访问超类  版本的 someProperty 属性。 你在重写一个属性时,必须将它的名字和类型都写出来
    - 在下标的重写实现中,可以通过 super[someIndex] 来访问超类版本中的相同下标。
    
    3.重写属性观察器
    class AutomaticCar: Car {
        override var currentSpeed: Double {
          didSet {
              gear = Int(currentSpeed / 10.0) + 1
          } 
        }
    }
    
    4.防止重写
    你可以通过把方法,属性或下标标记为 final 来防⽌它们被重写,只需要在声明关键字前加上 final 修饰符即可(例如: final var 、 final func 、 final class func 以及final subscript )。
    在关键字 class 前添加 final 修饰符( final class )来将整个类标记为 final 。这样的类是不可被继承的,试图继承这样的类会导致编译报错。