2015-10-13 OC语言中的复合
2015-10-13 OC语言中的复合
尘埃眠于光年yr 发表于2年前
2015-10-13 OC语言中的复合
  • 发表于 2年前
  • 阅读 5
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 复合的定义以及具体实例演示

复合,就是对象之间的组合,它不限制对象的个数,但至少有两个对象。

复合时,将要复合的对象(类实例化)的头文件导入被复合的类的头文件中,并在接口中定义复合对象的对象类型和设置方法的声明。

具体细节用实例说明;

如 现在有一个汽车,它由轮胎和引擎组成

main.m

#import <Foundation/Foundation.h>

#import "Car.h"

#import "Engine.h"

#import "Tire.h"


int main() {

   

    //实例化一个Car对象

    Car *car = [[Car alloc]init];

    

    //实例化一个Engine对象

    Engine *engine = [[Engine alloc]init];

    

    // 实例化一个Tire对象

    Tire *tire = [[Tire alloc]init];

    

    //给汽车设置发动机

    [car setEngine:engine];

    //给汽车设置轮胎

    [car setTire:tire];

    

    //汽车调用自身接口里面的方法

    [car describeCar];

        

}


Engine.h:

#import <Foundation/Foundation.h>


@interface Engine : NSObject


 //engine的方法声明

-(NSString *) describeI;


@end


Engine.m:

#import "Engine.h"


@implementation Engine


//engine 的方法的实现

-(NSString *)describeI

{

    return @"发动机";

}


@end


Tire.h

#import <Foundation/Foundation.h>


@interface Tire : NSObject


//tired的方法声明

-(NSString *) describeII;



@end


Tire.m:

#import "Tire.h"


@implementation Tire


//tire的方法实现

-(NSString *)describeII

{

   return @"轮胎";

    // 也可以返回一句话

    //return @"我是一个轮胎";

}


@end


Car.h:

#import <Foundation/Foundation.h>

// 头文件中导入enginetire

#import "Engine.h"

#import "Tire.h"


@interface Car : NSObject

{

    //Car类里面设置以类为返回类型的类属性,之前的一般是基本的几种数据类型,规则和之前设置类属性时一样。

    Engine * _engine;

    Tire * _tire;

}


// 设置引擎方法的声明

-(void) setEngine : (Engine *) engine;

-(Engine *) engine;


//设置轮胎方法的声明

-(void) setTire : (Tire *) tire;

-(Tire *) tire;


//设置汽车对象的方法声明

-(void) describeCar;

@end


Car.m:

#import "Car.h"


@implementation Car


//引擎方法的实现

-(void)setEngine:(Engine *)engine

{

    _engine = engine;

}


-(Engine *)engine

{

    return _engine;

}


//轮胎方法的实现

-(void)setTire:(Tire *)tire

{

    _tire = tire;

}


-(Tire *)tire

{

    return  _tire;

}


//汽车对象方法的实现

-(void) describeCar

{

    NSLog(@"我是一辆车,我有%@%@.",[_engine describeI],[_tire describeII]);

}

@end





  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 15
码字总数 13635
×
尘埃眠于光年yr
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: