Swift编程:继承、抽象、专业化与协议的运用
继承、抽象与专业化
在编程中,我们可以利用简单继承来对基类进行专业化处理。例如,我们已经声明了一个操作符函数,允许 Animal
类或其子类的任何实例使用后缀递增( ++
)操作符。但有时,我们希望为某个子类及其子类指定不同的行为。
比如,我们想以相当于人类年龄的值来表示狗的年龄。可以为后缀递增( ++
)操作符声明一个操作符函数,该函数接收一个 Dog
实例作为参数,并将年龄值增加7岁,而不是1岁。代码如下:
public postfix func ++ (dog: Dog) {
dog.age += 7
}
以下是创建 SmoothFoxTerrier
类实例 goofy
的代码示例,展示了该操作符的使用:
var goofy = SmoothFoxTerrier(age: 7, name: "Goofy", favoriteToy: "Scarf")
goofy.printAge()
goofy++
goofy.printAge()
由于 SmoothFoxTerrier
是 Dog
的子类,Swift会调用接收 Dog
实例的操作符函数,而