Objective-C 类的复合

来源:互联网 发布:常见的数据库管理系统 编辑:程序博客网 时间:2024/05/16 01:43
////  main.m//  Study////  Created by DwightDing on 16/3/12.//  Copyright © 2016年 DwightDing. All rights reserved.//#import <Foundation/Foundation.h>@interface Tire : NSObject@end//Tire@implementation Tire-(NSString *)description{    return (@"I'm a Tire, I last a while");}//description在Cocoa中定义@end@interface Engine : NSObject@end@implementation Engine-(NSString *)description{    return (@"I am an engine.Vroom");}@end@interface Car : NSObject{    Engine *engine;    Tire *tires[4];}-(void)print;@end@implementation Car-(id) 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;}-(void)print{    NSLog(@"%@",engine);    NSLog(@"%@",tires[0]);    NSLog(@"%@",tires[1]);    NSLog(@"%@",tires[2]);    NSLog(@"%@",tires[3]);}@endint main(int argc, const char * argv[]) {    Car *car;    car = [Car new];    [car print];    return 0;}

对类进行扩展:

////  main.m//  Study////  Created by DwightDing on 16/3/12.//  Copyright © 2016年 DwightDing. All rights reserved.//#import <Foundation/Foundation.h>@interface Tire : NSObject@end//Tire@implementation Tire-(NSString *)description{    return (@"I'm a Tire, I last a while");}//description在Cocoa中定义@end//Define Engine@interface Engine : NSObject@end//setter getter@implementation Engine-(NSString *)description{    return (@"I am an engine.Vroom");}@end//define Car@interface Car : NSObject{    Engine *engine;    Tire *tires[4];}-(void)setTire : (Tire *)tire atIndex : (int) index;-(Tire *)tireAtIndex : (int) index;-(Engine *) engine;-(void) setEngine : (Engine *) newEngine;-(void)print;@end@implementation Car//realize function-(void)setTire : (Tire *)tire atIndex : (int) index{    if (index<0||index>3) {        NSLog(@"error");        exit(1);    }    tires[index]=tire;}-(Tire *)tireAtIndex : (int) index{    if (index<0||index>3) {        NSLog(@"error");        exit(1);    }    return (tires[index]);}-(void) setEngine : (Engine *) newEngine{    engine=newEngine;}-(Engine *) engine{    return (engine);}-(void)print{    NSLog(@"%@",engine);    NSLog(@"%@",tires[0]);    NSLog(@"%@",tires[1]);    NSLog(@"%@",tires[2]);    NSLog(@"%@",tires[3]);}@endint main(int argc, const char * argv[]) {    Car *car = [Car new];    Engine *engine=[Engine new];    [car setEngine:engine];    for (int i = 0; i < 4; i++) {        Tire *tire = [Tire new];        [car setTire:tire atIndex:i];    }    [car print];    return 0;}


0 0
原创粉丝点击