文档章节

2015-10-13 OC语言中的复合

尘埃眠于光年yr
 尘埃眠于光年yr
发布于 2015/10/13 16:41
字数 479
阅读 55
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

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

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

具体细节用实例说明;

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

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





© 著作权归作者所有

尘埃眠于光年yr
粉丝 0
博文 15
码字总数 13635
作品 0
西安
私信 提问
加载中

评论(0)

【IOS开发笔记02】学生管理系统

端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品、native、前端、服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端...

范大脚脚
2017/11/17
0
0
如何实现iOS热更新

如何实现iOS热更新 字数803 阅读7169 评论19 喜欢42 最近被苹果审核整怕了,每次提交版本都得等待一周到两周的审核时间,我是受不了这种速度了,于是决定研究有没有其他的方法跳过提交版本这...

法斗斗
2016/08/15
104
0
swift4.1 学习回顾(1--8)

这本四百多页的书,花了差不多两个月(9.20——11.8)的时间终于看完了。因为我之前一直是OC语言的使用者,转Swift并不困难,且现在的项目也是Swift语言,差不多写了有一年了。这一次的学习是因...

小曼Study
2018/11/09
0
0
iOS 单例模式全面解析

我先列举一个苹果官方文档中的写法。 static AccountManager *DefaultManager = nil; + (AccountManager *)defaultManager { if (!DefaultManager) DefaultManager = [[self allocWithZone:N......

coderHan
2015/12/13
29
0
程序员面试闪充 -- KVC&KVO

一、键值编码KVC kvc&kvo视频讲解 1、介绍 由于oc的语言特性,使得开发者根本不必进行任何操作就可以进行属性的动态读写,这种方式就是Key Value Coding(简称KVC)。 KVC的操作方法由NSKey...

阡陌有客
2018/03/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

组件的自动装配

MainConfigOfAutowired.class /** * 自动装配 * Spring利用DI完成IOC容器中各个组件的依赖注入 * * 1. @Autowired ,自动注入 * 1.1 默认按照类型优先找寻组件,applicationContext.ge...

开源中国首席大督查
14分钟前
22
0
7-5 数组元素循环右移问题 (20分)

7-5 数组元素循环右移问题 (20分) 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−...

bangbangtang007
22分钟前
18
0
Docker网络

查看网络 docker network ls

muoushi
24分钟前
17
0
银企直联-前置机-企业接入-Java-socket

银企直联一般都是通过前置机与银行服务进行通信,企业服务 前置机 银行三者关系如下 在企业应用在这里就相当于客户端,前置机就相当服务端 ERP 与 CT 之间的交易数据报文采用 TCP/IP 协议的 ...

布袋和尚_爱吃鱼
25分钟前
26
0
设计模式之适配器—我要给iPhone充个电

定义 将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以相互合作。 如何使用 适配器模式同样来自于我们生活中,如手机的电源适配器,同样笔记本电脑/Pad等都需要电...

风清扬不会武功
25分钟前
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部