黑马程序员技术交流社区

标题: OC中建立类之间的关系之--复合 [打印本页]

作者: HiGodl    时间: 2015-9-23 09:31
标题: OC中建立类之间的关系之--复合
编程中的复合相当于音乐中作曲一样,将多个组件组合在一起,配合使用,从而得到完整的作品。
        比如说一辆车需要有好多零件,每种零件作为一个对象,那么车就是这些零件的组合体,在程序中也就是车的成员变量是零件对象
        下面来看一个小例子

首先定义一个轮胎的类
  1. //因为只是举个栗子就简单写了
复制代码
接下来定义一个发动机Engine类
  1. @interface Engine : NSObject
  2. @end//Engine----定义Engine类
  3. @implementation Engine
  4. -(NSString *) description{
  5.     return (@"i am a engine Vroooooom!!!");
  6. }
  7. @end // Engine---定义Engine方法(<span style="line-height: 2.2em;">重写description方法</span><span style="line-height: 2.2em;">)</span>
复制代码
下面定义一个以Tire和Engine为成员变量的Car类
  1. @interface Car : NSObject{
  2.     Tire * _tires[4];  //长度为4的轮胎对象数组
  3.     Engine * _engine;  //发动机
  4. }
复制代码
接下来是main方法
  1. int main(int argc, const char * argv[]) {
  2.     Tire * tire =[[Tire alloc] init]; //实例化tire
  3.     NSLog(@"%@",tire);  //打印Tire  打印---I am a tire , I last a while
  4.     Engine * engine = [[Engine alloc] init];  //实例化Engine
  5.     NSLog(@"%@",engine);  //打印Engine 打印---i am a engine Vroooooom!!!
  6.     Car *car = [[Car alloc] init];   //实例化Car
  7.     [car setEngine:[[Engine alloc] init]]; //设置car的Engine
  8.     for(int i=0;i<4;i++){
  9.         [car setTire:[[Tire alloc] init] atIndex:i]; //设置car的四个轮胎
  10.     }
  11.     [car print]; //执行Car的打印方法
复制代码

感觉上并不难,其实就是多个小零件类组成一个成品类










欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2