复合(貌似通常也叫组合)是指在一个类中引用其他对象。通俗点说,复合表示这个类“有”什么。而继承则是表示这个类“是”什么。
复合与继承的使用原则:
1)如果A“是”B,则用继承。如宾利是小汽车,因此该类继承Car;
2)如果A“有”B,则用复合。如小汽车拥有引擎,因此是复合关系。
代码实例:
//定义Car类
@interface Car:NSObject{
Engine * engine; //引用一个引擎对象
}
-(void)setEngine:(Engine * )e;
-(void)start;
@end //Car.h
@implementation Car
-(void)setEngine:(Engine *)e{
engine = e;
}
-(void)start(){
[engine start];
}
@end //Car.m
//定义引擎类
@interface Engine:NSObject
-(void)start;
@end //Engine.h
@implements Engine
-(void)start{
NSLog(@"Engine start");
}
@end; //Engine.m
//实例化
Car c = [Car new];
[c setEngine:[Engine new]];
[c start];