Image Description

继承是面向对象编程的特性之一,当多个类具有很多共性时,可以将这些共性集中到一个父类中,其它的类再继承这个父类,这样可以少写很多重复代码。

定义父类

class Car {
    var brand = "BMW"
    var description: String {
        return "This is a \(brand) car"
    }
    func driving() {
        // do nothing - an arbitrary vehicle doesn't 
  // necessarily make a noise
    }
}

使用初始化语法创建了一个 Vehicle 实例, 类型名后面跟着一个空括号:

let newCar = Car()

新建一个 Car 实例后,通过 description 属性来输出一个关于汽车介绍的描述:

print("Hello: \(newCar.description)")
 
//Hello: This is a BMW car

定义子类

定义一个叫 Audi的子类,父类是Car。Audi 继承 Car的 brand、description属性和 driving()方法。同时还新定义了一个属性 hasAutopilot,默认值是 false。

class ElectricCar: Car {
  var hasAutopilot = false
}

新建一个 ElectricCar 实例,hasAutopilot 属性设为 true

let tesla = ElectricCar()
tesla.hasAutopilot = true

修改 brand属性,通过 description 属性输出描述:

tesla.brand = "Tesla"

print("Hello: \(tesla.description)")

输出:Hello: This is a Tesla car