继承、抽象、专业化与协议编程
1. 特定子类的运算符函数声明
在编程中,我们可以为特定子类声明运算符函数。之前我们已经声明了一个运算符函数,允许 Animal 类或其子类的任何实例使用后缀递增( ++ )运算符。不过,有时我们希望为某个子类及其子类指定不同的行为。
例如,我们可能想以人类年龄的等价方式来表示狗的年龄。可以为后缀递增( ++ )运算符声明一个运算符函数,该函数接收一个 Dog 实例作为参数,并将年龄值增加 7 岁,而不是 1 岁。实现此目标的代码如下:
public postfix func ++ (dog: Dog) {
dog.age += 7
}
下面的代码创建了一个名为 goofy 的 SmoothFoxTerrier 类的实例,打印其年龄,应用后缀 ++ 运算符,然后打印新的年龄:
var goofy = SmoothFoxTerrier(age: 7, name: "Goofy", favoriteToy: "Scarf")
goofy.printAge()
goofy++
goofy.printAge()
由于 SmoothFoxTerrier 是 Dog 的子类,S
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



