maxPassengers属性在继承自父类的时候已经被初始化了,对于Bicycle来说是正确的,因此不需要再做更改。然后numberOfWheels是不对的,所以被替换成了2.
不仅属性是继承于Vehicle的,Bicycle还继承了父类的方法。如果你创建一个实例,然后调用了已经继承的description方法,可以得到该交通工具的描述并且看到它的属性已经被修改:
复制代码
let bicycle = Bicycle()
println("Bicycle: (bicycle.description())")
// Bicycle: 2 wheels; up to 1 passengers
子类本身也可以作为父类被再次继承:
复制代码
class Tandem: Bicycle {
init() {
super.init()
maxPassengers = 2
}
}
上面的例子创建了Bicycle的子类,叫做tandem,也就可以两个人一起骑的自行车。所以Tandem没有修改numberOfWheels属性,只是更新了maxPassengers属性。
注意:子类只能够在构造的时候修改变量的属性,不能修改常量的属性。
创建一个Tandem的实例,然后调用description方法检查属性是否被正确修改:
复制代码
let tandem = Tandem()
println("Tandem: (tandem.description())")
// Tandem: 2 wheels; up to 2 passengers
注意到description方法也被Tandem继承了。
3、重写方法
子类可以提供由父类继承来的实例方法,类方法,实例属性或者下标的个性化实现。这个特性被称为重写。
重写一个由继承而来的方法需要在方法定义前标注override关键词。通过这样的操作可以确保你所要修改的这个方法确实是继承而来的,而不会出现重写错误。错误的重写会造成一些不可预知的错误,所以如果如果不标记override关键词的话,就会被在代码编译时报错。
override关键词还能够让Swift编译器检查该类的父类是否有相符的方法,以确保你的重写是可用的,正确的。
访问父类方法,属性和下标








