您的位置:首页 > 移动开发 > Objective-C

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

2012-10-26 16:07 405 查看

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.y, bounds.width, bounds.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: