二十三、继承(六)重写 措施

本文介绍了一种物件从其父类继承措施并重写这些措施的方法,通过具体程序示例展示了子类如何覆盖父类的方法来实现不同功能。

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

我们  注意到  一类物件  可以  从它所属的大类中  继承  已有的措施,你  无法  将  这些继承而来的措施  去掉。但是  我们  可以重写  继承而来的措施,让  这些措施  可以完成  不同的任务。我们  来看看  下面这个程序  是  怎样  办到  这个的:

文件ClassA.h:

文件ClassA.m:

文件ClassB.h:

文件ClassB.m:

文件main.m:

通过ClassA.h  和  ClassA.m这两个文件  我  创建了  ClassA这类物件。每个ClassA类型的物件  都包含  一个整数类型的变量x。对  任何一个ClassA类型的物件  采取  initValue:这项措施  都可以  将  其所包含的变量x的值  设定为  100。通过ClassB.h  和  ClassB.m这两个文件  我  创建了  ClassB这类物件。在文件ClassB.h当中

这行语句  说明了  ClassB这类物件  属于  ClassA这大类物件中的一个小类,于是  和  ClassA类型的物件  一样,每个ClassB类型的物件  也都包含  一个整数类型的变量x。我们  同样可以  对  每个ClassB类型的物件  采取initValue:这项措施,将  其所包含的变量x的值  设定为  100。

但是  我  为ClassB这类物件  编写了  initValue这项措施,这项措施  是  将  实施对象的变量x的值  设定为  200。我为ClassB这类物件编写的措施initValue  和  为ClassA这类物件编写的措施initValue  拥有  相同的名称,但是  ClassB这类物件的措施initValue  会取代  ClassA这类物件的措施initValue。

在主程序main()当中  我  创建了  一个ClassB类型的物件bObject。然后  我  再  对  物件bObject  采取了  initValue这项措施  为  其所包含的变量x  设定  值,然后  再  对  其  采取了  printValue这项措施  将  其所包含的变量x的值  显示出来。我们  来看看  运行的结果:

通过  这个结果,我们  可以看出  bObject这个物件所包含的变量x的值  被设定为了  200,而  不是  100。这个结果  说明了  在bObject这个ClassB类型的物件身上  属于ClassB这类物件的措施initValue  取代了  属于ClassA这类物件的措施initValue。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值