当在重写子类继承自父类的方法,属性或者下标的时候,需要用到一部分父类已有的实现。比如你可以重定义已知的一个实现或者在继承的变量中存储一个修改的值。
适当的时候,可以通过使用super前缀来访问父类的方法,属性或者下标:
叫someMethod的重写方法可以在实现的时候通过super.someMethod()调用父类的someMethod方法。
叫someProperty的重写属性可以在重写实现getter或者setter的时候通过super.someProperty调用父类的someProperty。
叫someIndex的重写下标可以在实现下标的时候通过super[someIndex]来访问父类的下标。
复写方法
你可以在你的子类中实现定制的继承于父类的实例方法或者类方法。
下面的例子演示的就是一个叫Car的Vehicle子类,重写了继承自Vehicle的description方法。
复制代码
class Car: Vehicle {
var speed: Double = 0.0
init() {
super.init()
maxPassengers = 5
numberOfWheels = 4
}
override func description() -> String {
return super.description() + "; "
+ "traveling at (speed) mph"
}
}
Car中定义了一个新的Double类型的存储属性speed。这个属性默认值是0.0,意思是每小时0英里。Car还有一个自定义的构造函数,设置了最大乘客数为5,轮子数量是4.
Car重写了继承的description方法,并在方法名description前标注了override关键词。
在description中并没有给出了一个全新的描述实现,还是通过super.description使用了Vehicle提供的部分描述语句,然后加上了自己定义的一些属性,如当前速度。
如果你创建一个Car的实例,然后调用description方法,会发现描述语句变成了这样:
复制代码
let car = Car()
println("Car: (car.description())")








