十八、继承(一)一切 从最底层 开始

本文阐述了面向对象编程中的继承原理,通过示例展示了如何创建类并继承属性,以及类之间的从属关系如何体现。重点讲解了如何利用现有类类型进行新类的创建和属性的继承。

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

从这一篇博文  开始,我们  会学到  一些关键的原理,正是  这些原理  使  面向对象编程  变得  强大。这些原理  都是  跟继承  有关的。在以前的博文当中,我  提到过  大类的概念。比如  轿车这类事物  属于  汽车这一大类,而  汽车这类事物  又属于  交通工具这一大类。所以  在objective-c当中,某类物件  可能属于  某一大类物件。如果  某类物件  不属于  任何一大类物件,那么  这类物件  就叫做  最底层的一类物件。你  可以  自己  创建  最底层的一类物件,这类物件  可以不属于  任何一大类物件。我们  一般  不  这样  做,我们  只需要  利用好  已有的物件类型。到目前  为止,我们  已经  创建过  一些物件类型了,这些类型的物件  都属于  最底层的一类物件,我们  称  其 为:NSObject。比如

这行语句中的Fraction这类物件  就是  NSObject这类最底层的物件中的一小类物件。如果  用  示意图  来表示,就是  这样的:

一旦  我们  创建出  一类新的物件,这类新物件  都会  从包含它的大类  继承  特定的属性。比如  交通工具这类事物  具有  需要动力这种属性,那么  交通工具这类事物中的汽车这一小类事物  就会继承  需要动力这种属性,而  包含在汽车这类事物中的小轿车这一小类事物  同样  也会继承  需要动力这种属性。同样的道理,在objective-c中  我们创建的新的类型的物件  都会继承  它所属的那一大类物件中的一些属性,比如  变量  和  措施。

下面  我  用  一个完整的程序  来展示  一类物件  是怎样  继承  它所属的那一大类物件中的属性的:

文件ClassA.h:

文件ClassA.m:

文件ClassB.h:

文件ClassB.m:

文件main.m:

在这个程序当中  我  先  创建了  ClassA这类物件,ClassA这类物件  属于  NSObject这一大类物件。然后  我  又  创建了  ClassB这类物件,ClassB这类物件  又  属于  ClassA这一大类物件。而  ClassA这类物件  包含了  个体变量x,并且  可以对  其中的个体  采取setInitialValue:这项措施。于是  任何一个ClassB类型的物件  都拥有  一个叫做x的变量,并且  我们  可以对  其  采取  setInitialValue:这项措施。比如  在主程序main()当中  我  创建了  一个ClassB类型的物件objectB。这个ClassB类型的物件objectB  拥有  一个名叫x的变量,并且  我  对  其  采取了  setInitialValue:这项措施,将  这个变量x  设定为  10:

因为  物件objectB  属于ClassB类型,所有的ClassB类型的物件  又都  属于ClassA类型,而  所有的ClassA类型的物件  都拥有  一个变量x,都可以  对  其  采取  setInitialValue这项措施,所以  我  才能够  对  ClassB类型的物件objectB  采取  setInitialValue这项措施。

这行语句  对  objectB这个物件  采取了  retriveValue:这项措施,将  这个物件的个体变量x的值  显示出来。我  来运行  这个程序,看  能不能得到  正确的结果。首先  需要  编译:

然后  输入  ./a.out  运行,得到  这样的结果:

这  说明了  objectB这个ClassB类型的物件  继承了  ClassA这类物件的两个属性:1、都  包含  变量x;2、可以  对  其  采取  setInitialValue:这项措施。

NSObject、ClassA  和  ClassB这三类物件的从属关系  可以用  下面这张图  来表示:

如果  你  创建  一类叫ClassC的物件,而  ClassC这类物件  属于  ClassB这一大类物件,那么  任何一个ClassC类型的物件  都会  继承到  ClassB、ClassC  和  NSObject这三类物件的属性。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值