十九、继承(二)通过继承 进行扩展

继承这种思想  常常  用来对  一类物件  进行扩展。现在  我  在objective-c当中  创建  一类叫Rectangle的物件  来代表  长方形这类事物,就像  下面这样:

文件Rectangle.h:

文件Rectangle.m:

通过Rectangle.h  和  Rectangle.m这两个文件  我  创建了  Rectangle这类物件。从这两个文件当中,我们  可以看出  任何一个Rectangle类型的物件  都包含  width  和  height这两个变量  来表示  这个Rectangle类型的物件所代表的长方形的宽  和  高。同时  我们  可以  对  任何一个Rectangle类型的物件  采取  setWidth:andHeight:、area:、perimeter:这三项措施,从而  达到  对  其所代表的长方形  设定  宽  和  高、计算  面积  和  计算  周长的目的。

假设  我  要使用  正方形,我  本来可以创建  一类全新的物件,叫做Square  来代表正方形。但是  仔细  想想,我  发现  正方形  刚好  是  宽  和  高  都一样的长方形。于是  我  可以创建  一类叫做Square的物件,并且  让  Square这类物件  充当  Rectangle这一大类物件中的一小类,就像  下面这样:

文件Square.h:

文件Square.m:

通过Square.h  和  Square.m这两个文件,我  创建了  Square这类物件。

这两行语句  表明了  Square这类物件  属于  Rectangle这大类物件中的一个小类。因此  任何一个Square类型的物件  都  像Rectangle类型的物件那样  拥有  Width  和  Height两个变量;同  Rectangle类型的物件  一样,我们  可以  对  任何一个Square类型的物件  采取  area:  和  perimeter:两项措施。由于  setWidth:andHeight:这项措施  会 分别  设定  正方形  或  长方形的宽  和  高,所以  我们  不对  Square类型的物件  采取  这项措施。不过  setSide:这项措施  可以将  Square类型物件的宽  和  高  设定为  相同的值。

下面  通过一个实际的程序  来验证  Square这类物件  是否继承了  Rectangle这类物件的属性:

文件main.m:

在这个程序当中  我  首先  创建了  一个Square类型的物件mySquare  来代表  一个正方形。然后  对  mySquare这个物件  采取了  setSide:这项措施,并且  用  5  来充当  参数,以此  将  mySquare这个物件所代表的正方形的周长  设定为  5。接着  我  又  对mySquare这个物件  采取了  side:、area:  和  perimeter:这三项措施,将  mySquare这个物件所代表的正方形的边长、面积  和  周长  分别  计算出来,再  通过调用  NSLog()函数  显示出来。其中  area:  和  perimeter:这两项措施  是  从Rectangle这大类物件中  继承到的。运行  这个程序后,得到了  正确的结果:

这  表明  mySquare这类物件  继承了  Rectangle这类物件的属性。像  这样  创建  Square这类物件的方法  就是  对  已有的类型的物件  进行扩展  来满足  自己的需要,这种方法  在今后  会  常常  用到。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值