Objective-C 复合

我接下来所要讲得是复合

带着问题学习会快一点

什么是复合? 有什么优点?什么时候用复合?什么是依赖关系?如何解决?

复合就是将一些个体组件组合起来形成一个整体。(一个类定义另一个类作为实例变量)

优点:

1.将其他对象引用到新创建的对象中,形成新的整体,功能更加强大。

2.耦合度较小(相对于继承)

继承是“is a”是一个,复合是“has a”有一个,比如电脑有一个键盘,汽车有一个引擎等等就可以用复合

依赖关系:一个类和另一个类或多个类之间的关系

比如A.h文件导入B.h文件,B.h文件导入C.h文件,这样三个文件之间就建立一种关联

如果C.h文件新增加一个实例变量,那么B.h,A.h文件则会重新编译来接受这个变化,这就是依赖关系

用@class代替#import,@class是告诉编译器这就是一个类可以放心使用,编译器不需要知道这个类里面的内容,而是只要知道它是一个类,可以通过指针来引用

 

下面我们来通过一个实例来了解复合具体该怎么用

举一个汽车类,汽车(Car)、引擎(Engine)、轮胎(Tire),使用复合完成一辆汽车的装配

创建一个工程,main函数不动它,建立Engine类

.h文件不动它

 

创建Tire类

跟引擎类一样

创建汽车类

在这里就使用到了@class,把引擎类和轮胎类看做是实例变量,不用调用类里面的东西就可以用@class否则还要用#import

这里就组装汽车

在Car.m文件实例化

在main函数里面实现输出

 

这只是很浅显的复合例子,如果想深入读者可以自己去写,比如有汽车的四个轮胎都有自己不同的位置,当访问汽车上某个轮胎时也要指定这个轮胎的具体位置才可以,所以在Car里面还要重写setTire:(Tire*)newTire andIndex:(int )index 带有索引的setter 方法,同样也要添加带有索引的getter方法,需要注意的要添加 if 判断轮胎取值的范围。

 

转载于:https://www.cnblogs.com/mojiewei/p/4757886.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值