10、继承、抽象、专业化与协议编程

继承、抽象、专业化与协议编程

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值