標籤: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 之 複合與存取