首页 > 代码库 > Object-c 之 复合与存取
Object-c 之 复合与存取
说到复合与存取,我做完这个例子,感觉就是类的集合,也没什么东西。
主Car类:
#import "Engine.h" #import "Tire.h" //汽车 @interface Car : NSObject { Engine *engine; Tire *tires[4]; } -(Engine *)engine; -(void)setEngine:(Engine *) newEngine; -(Tire *)tireAtindex:(int) index; -(void)setTile:(Tire *)tile atindex:(int) index; -(void)print; @end
#import "Car.h" @implementation Car -(id)init{ NSLog(@"Car init"); if(self=[super init]){ engine=[Engine new]; tires[0]=[Tire new]; tires[1]=[Tire new]; tires[2]=[Tire new]; tires[3]=[Tire new]; } return (self); } -(Engine *)engine{ return engine; } -(void)setEngine:(Engine *)newEngine{ engine=newEngine; } -(void)setTile:(Tire *)tile atindex:(int)index{ if(index<0||index>3){ NSLog(@"bad index %d in setTire:atindex",index); exit(1); } tires[index]=tile; } -(Tire *)tireAtindex:(int)index{ if(index<0||index>3){ NSLog(@"bad index %d in tireAtindex",index); exit(1); } return tires[index]; } -(void)print{ NSLog(@"%@",engine); NSLog(@"%@",tires[0]); NSLog(@"%@",tires[1]); NSLog(@"%@",tires[2]); NSLog(@"%@",tires[3]); } @end
Tire类
#import <Foundation/Foundation.h> //轮胎 @interface Tire : NSObject @end
#import "Tire.h" @implementation Tire - (NSString *)description{ return (@"I'm a tire,I last a while!"); } @end
Tire的子类 AllWeatherRadial.h
#import "Tire.h" @interface AllWeatherRadial :Tire @end
#import "AllWeatherRadial.h" @implementation AllWeatherRadial -(NSString *)description{ return (@"I'm a tire for rain or shine!"); } @end
Engine类
#import <Foundation/Foundation.h> //引擎 @interface Engine : NSObject @end
#import "Engine.h" @implementation Engine -(NSString *)description{ return (@"I'm a engine,wuwuwu"); } @end
Engine子类 Slant6
#import "Engine.h" @interface Slant6 : Engine @end
#import "Slant6.h" @implementation Slant6 -(NSString *)description{ return (@"I'm a slant6 veoom"); } @end
主函数
#import"Car.h" #import"AllWeatherRadial.h" #import"Slant6.h" int main(int argc, const char * argv[]) { Car *car=[Car new]; Slant6 *engine=[Slant6 new]; [car setEngine:engine]; for(int i=0;i<4;i++){ Tire *tire=[AllWeatherRadial new]; [car setTile:tire atindex:i]; } [car print]; return (0); }
运行结果
Object-c 之 复合与存取
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。