三十七、类别 和 协议(一)类别

本文介绍了一种利用类别来扩展已有物件功能的方法,通过实例演示如何为Fraction物件增加算术运算功能,如加法、减法、乘法和除法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时  当你  使用  某一类物件时,你  可能会希望  添加  一些新的措施  适用于  这类物件。比如  适用于Fraction这类物件的措施  有  add:,但是  add:这项措施  只能将  两个比例  相加。因此  你  再  添加  三项措施  适用于  Fraction这类物件,从而  可以将  两个比例  相减、相减  和  相除。

有  一个很实际的解决法案  就是  类别。类别  使  你  很容易地  将  相关联的措施  模块化。同时  类别  也  使  你  很容易地  对  某类物件  进行扩展,而  你  却不需要  知道  这类物件的源代码,也  不需要  创建  属于这类物件的新的一类物件。

我们  先  来看看  Fraction这类物件的接口部分:

接下来  我  把  add:这项措施  从这里  移除,并且  将  其  添加  到新的类别中。添加到新类别中的措施  除了  add:之外,还有  另外三项措施  可以完成  减法、乘法  和  除法。下面  就是  MathOperations这个新类别的接口部分:

虽然  这  也是  接口部分,但  它  是  对已有的Fraction类型物件的接口部分的扩展。因此  你  必须导入  已有的接口部分文件,以便  让  编译器  知道  Fraction这类物件的构成。在#import后面  出现了  这样一行语句:

这行语句  告诉  编译器  MathOperations  是  Fraction这类物件的一个新类别。需要注意的  是  你  在这里  并不需要写出  Fraction这类物件所属的类型,因为  编译器  已经  从Fraction.h这个文件当中  得知了。你  也不需要写出  每个Fraction类型的物件所包含的变量。如果  你  写出  Fraction这类物件所属的类型  或者  每个Fraction类型的物件所包含的变量,编译器  就会发出  错误警告。

然后  我  把  MathOperations这个类别中所有的措施  和  主程序  一起  放  在一个文件main.m当中:

运行  这个程序,可以得到  这样结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值