複合,就是對象之間的組合,它不限制對象的個數,但至少有兩個對象。
spa
複合時,將要複合的對象(類實例化)的頭文件導入被複合的類的頭文件中,並在接口中定義複合對象的對象類型和設置方法的聲明。.net
具體細節用實例說明;3d
如 如今有一個汽車,它由輪胎和引擎組成orm
main.m
對象
#import <Foundation/Foundation.h>接口
#import "Car.h"get
#import "Engine.h"it
#import "Tire.h"io
int main() {class
//實例化一個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;
Engine.m:
#import "Engine.h"
@implementation Engine
//engine 的方法的實現
-(NSString *)describeI
{
return @"發動機";
}
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>
// 頭文件中導入engine和tire
#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