Objectvie-C继承、新增类、内部函数调用、外部函数调用

1.  四个类,一个main.m

2. 代码实例:

main.m

//

//  main.m

//  Circle

//

//  Created by macsir on 12-10-25.

//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//


#import<Foundation/Foundation.h>

#import"Circle.h"

#import"Rectangle.h"

#import"PblateSphereiod.h"

#import"Triangle.h"


NSString *colorName (ShapeColor colorName);

void drawShapes (id shapes[],int count);


void drawTriangle(ShapeRect bounds,ShapeColor fillColor);

void drawEgg(ShapeRect bounds,ShapeColor fillColor) ;

void drawRectangle(ShapeRect bounds,ShapeColor fillColor) ;

void drawCircle(ShapeRect bounds,ShapeColor fillColor) ;


int main (int argc,constchar * argv[])

{

//    @autoreleasepool {

//        

//        // insert code here...

//        NSLog(@"Hello, World!");

//        

//    }

//    Circle circle;

//    circle.draw();


    id shapes[4];

    

    ShapeRect rect0 = {0, 0, 10, 30};

    shapes[0] = [Circlenew];

    [shapes[0]setBounds:rect0];

    [shapes[0]setFillColor:kRedColor];

    

    ShapeRect rect1 = {30, 40, 50, 60};

    shapes[1] = [Rectanglenew];

    [shapes[1]setBounds:rect1];

    [shapes[1]setFillColor:kGreenColor];

    

    ShapeRect rect2 = {0, 0, 10, 30};

    shapes[2] = [PblateSphereiodnew];

    [shapes[2]setBounds:rect2];

    [shapes[2]setFillColor:kBlueColor];

    

    ShapeRect rect3 = {47, 32, 80, 50};

    shapes[3] = [Trianglenew];

    [shapes[3]setBounds:rect3];

    [shapes[3]setFillColor:kRedColor];

    

    drawShapes(shapes, 4);

    

    return 0;

}


void drawShapes (id shapes[],int count)

{

    int i;

    for(i = 0; i<count; i++) {

        [shapes[i] draw];

    }

}//drawShapes


3. 基础类:

//

//  Circle.h

//  Circle

//

//  Created by macsir on 12-10-25.

//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//


#import<Foundation/Foundation.h>

#import"PublicData.h"


@interface Circle :NSObject

{

    ShapeColor fillColor;

    ShapeRect bounds;

}


- (NSString*) getColorName: (ShapeColor) colorName;

- (void) setFillColor: (ShapeColor) fillColor;

- (void) setBounds: (ShapeRect) bounds;

- (void) draw;


@end//Circle


//

//  Circle.m

//  Circle

//

//  Created by macsir on 12-10-25.

//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//


#import"Circle.h"


@implementation Circle//用于定义类的公共接口


- (NSString *) getColorName: (ShapeColor)c 

{

    switch (c) {

        case kRedColor:

            return @"Red";

            break;

       casekGreenColor:

            return @"Green";

            break;

        case kBlueColor:

            return @"Blue";

            break;

        default:

            break;

            

    }

   return@"no clue";

}//myColorName


- (void) setFillColor: (ShapeColor) c

{

    fillColor = c;

}//setFillColor


- (void) setBounds: (ShapeRect) b

{

    bounds = b;

}//setBounds


- (void) draw

{

   NSLog(@"Drawing a circle at (%d %d %d %d) in %@",bounds.x ,bounds.y,bounds.width,bounds.height, [selfgetColorName:fillColor]);

}


@end


4. 继承类:

//

//  Rectangle.h

//  Circle

//

//  Created by macsir on 12-10-25.

//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//


#import<Foundation/Foundation.h>

#import"PublicData.h"

#include"Circle.h"


@interface Rectangle :Circle



@end


//

//  Rectangle.m

//  Circle

//

//  Created by macsir on 12-10-25.

//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//


#import"Rectangle.h"


@implementation Rectangle


@end


其他继承类大同。


5. 总结:

*继承:

#include "Circle.h"

@interface Rectangle :Circle


*内部接口调用:

    NSLog(@"Drawing a circle at (%d %d %d %d) in %@"bounds.x , bounds.ybounds.widthbounds.height, [selfgetColorName:fillColor]);



*外部类的接口调用:

#import"Circle.h"

    id shapes[4];

    

    ShapeRect rect0 = {0, 0, 10, 30};

    shapes[0] = [Circlenew];

    [shapes[0]setBounds:rect0];

    [shapes[0]setFillColor:kRedColor];


6. 运行结果

2012-10-25 20:53:42.067 Circle[1307:707] Drawing a circle at (0 0 10 30) in Red

2012-10-25 20:53:42.071 Circle[1307:707] Drawing a circle at (30 40 50 60) in Green

2012-10-25 20:53:42.073 Circle[1307:707] Drawing a circle at (0 0 10 30) in Blue

2012-10-25 20:53:42.075 Circle[1307:707] Drawing a circle at (47 32 80 50) in Red





你可能感兴趣的:(Objectvie-C继承、新增类、内部函数调用、外部函数调用)