Shapes-Object4
来源:互联网 发布:音乐的发展历程知乎 编辑:程序博客网 时间:2024/06/06 02:25
继续修改上述代码,如下:
//// main.m// Shapes-Object//// Created by cloud on 13-3-7.// Copyright (c) 2013年 cloud. All rights reserved.//#import <Foundation/Foundation.h>typedef enum { kRedColor, kGreenColor, kBlueColor} ShapeColor;typedef struct { int x,y,width,height;} ShapeRect;NSString *colorName(ShapeColor color){ switch (color) { case kRedColor: return @"red"; break; case kGreenColor: return @"green"; break; case kBlueColor: return @"blue"; break; default: return @"no clue"; break; }}@interface Shape : NSObject{ ShapeColor fillColor; ShapeRect bounds;}@end@implementation Shape-(void) setFillColor:(ShapeColor)c{ fillColor=c;}-(void) setBounds:(ShapeRect)b{ bounds=b;}-(void) draw{ }@end@interface Circle :Shape{}@end@implementation Circle-(void) setFillColor:(ShapeColor)c{ if (c==kRedColor) { c=kGreenColor; } [super setFillColor:c]; //if (c==kRedColor) { // fillColor=kGreenColor; //} }-(void) draw{ NSLog(@"drawing a circle at(%d %d %d %d) in %@",bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));}@end@interface Rectangle : Shape{}@end@implementation Rectangle-(void) draw{ NSLog(@"drawing a rectangle at(%d %d %d %d) in %@",bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));}@end@interface OblateSphereoid : Shape{ }@end@implementation OblateSphereoid-(void) draw{ NSLog(@"drawing an egg at(%d %d %d %d) in %@",bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));}@end@interface Triangle : Shape{}@end@implementation Triangle-(void) draw{ NSLog(@"drawing a triangle at(%d %d %d %d) in %@",bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor));}@endvoid drawShapes(id shapes[],int count){ int i; for(i=0;i<count;i++) { id shape= shapes[i]; [shape draw]; }}int main(int argc, const char * argv[]){ //@autoreleasepool { id shapes[4]; ShapeRect rect0={0,0,10,30}; shapes[0]=[Circle new]; [shapes[0] setBounds:rect0]; [shapes[0] setFillColor:kRedColor]; ShapeRect rect1={30,40,50,60}; shapes[1]=[Rectangle new]; [shapes[1] setBounds:rect1]; [shapes[1] setFillColor:kGreenColor]; ShapeRect rect2={15,19,37,29}; shapes[2]=[OblateSphereoid new]; [shapes[2] setBounds:rect2]; [shapes[2] setFillColor:kBlueColor]; ShapeRect rect3={47,32,80,50}; shapes[3]=[Triangle new]; [shapes[3] setBounds:rect3]; [shapes[3] setFillColor:kRedColor]; drawShapes(shapes, 4); // } return 0;}
运行结果如下:
这段代码展示了如何调用父类的方法,通过关键字super,子类可以调用父类的方法。circle中setFillColor现有的代码与注释的代码效果相同。只不过一个是调用父类方法实现,一个是重写方法。
- Shapes-Object4
- Shapes-Procedural
- Shapes-Procedural
- Shapes-Object
- Shapes-Object2
- Shapes-Ojbect3
- GDI ---Shapes
- Solid Shapes
- SVG Shapes
- ObjecT4:On-line multiple instance learning (MIL)学习
- o3d教程2 - shapes
- custom textures and Shapes
- zoj 1472 Overlapping Shapes
- magic CSS shapes
- poj 3449 Geometric Shapes
- poj 3449 Geometric Shapes
- Defining Shapes 定义形状
- Drawing Shapes 绘制形状
- 充电电池基本知识
- 窗体和命令按钮、标签、文本框控件的常用属性
- C#ArrayList
- 使用apache自带的压力测试工具进行网站压力测试
- c#在Asp.Net中解析json数据
- Shapes-Object4
- QT安装文件的制作
- json 解析
- 利用matlab编写的Butterworth低通滤波程序
- Linux中断(interrupt)子系统之三:中断流控处理层
- collate chinese_prc_ci_as null 是什么意思
- 苹果消息推送服务教程:第一二部分(共2部分)
- __declspec(dllimport)的作用
- MyEclipse 8.5注册码(到2016年)