iOS开发-学习笔记-类的实例化和调用

  1. @符号:
    OC中@符号就代表是C语言的扩展;
@interface Circle : NSObject{
    ShapeColor fillcolor;
    ShapeRect bounds;
}
-(void) setFillColor: (ShapeColor) fillColor;
- (void) setBounds: (ShapeRect) bounds;
- (void) draw;
@end// Circle
  1. Circle 类的声明,以@开头,表示是OC语言,
  2. NSObject是继承自该类的意思;
  3. 该类有两个实例变量和3个方法,每次创建对象,对象中都将包含着两个实例变量,
  4. - (void) 前面的短线表示这是OC方法的声明,()内是返回值;
    
  5. - (void) setFillColor: (ShapeColor) fillColor;,方法名setFillColor后面的冒号 告诉编译器和编程人员后面将出现参数;
    
  6. 冒号的使用注意: 如果方法需要使用参数,则需要冒号,否则不需要冒号;
  7. 中缀符的使用: [circle setFIllColor : kRedColor] 方法的名称和参数在一起,circle是类的实例,serFillColor是方法名, kRedolor是被传递的参数,如果需要传递多个参数,直接在后面写参数名: 参数即可,如:
[textThing setStringValue : @"there" color: kBLueColor]

其中,setStringValue和color是参数的名称,@"there"和kBLueColor是被传递的参数.

@end //Circle
  1. 最后这行告诉编译器我们已经完成了Circle这个类的声明,最后添加注释注明类名,可以方便的知道当前是哪个类.
    不写@end会报错.
    练习使用类的定义和调用practise如下:
//
//  main.m
//  test1
//
//  Created by mac on 2020/12/29.
//  Copyright © 2020 BlueBerry. All rights reserved.
//

#import <Foundation/Foundation.h>
typedef enum{ //枚举定义形状
    kCircle,
    kRectangle,
    kEgg
} ShapeType;

typedef enum{  //枚举定义颜色
    kRedColor,
    kGreenColor,
    kBlueColor
} ShapeColor;

typedef struct{
    int x, y, width, height;
} ShapeRect;

typedef struct{
    ShapeType type;
    ShapeColor  fillColor;
    ShapeRect bounds;
}Shape ;

NSString *colorName(ShapeColor colorName){
    switch(colorName){
        case kBlueColor:
            return @"blue";
            break;
        case kRedColor:
            return @"red";
            break;
        case kGreenColor:
            return @"green";
            break;
    }
    return @"no clue";
}
//_________________
//ALl about Circle
@interface Circle : NSObject{
    ShapeColor fillcolor;
    ShapeRect bounds;
}
-(void) setFillColor: (ShapeColor) fillColor;
- (void) setBounds: (ShapeRect) bounds;
- (void) draw;
@end// Circle


@implementation Circle
- (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,colorName(fillcolor));
} //draw
@end // Circle

//_________________
//ALl about Rectangle
@interface  Rectangle  :  NSObject
{
    ShapeColor fillcolor;
    ShapeRect bounds;
}
-(void) setFillColor: (ShapeColor) fillColor;
- (void) setBounds: (ShapeRect) bounds;
- (void) draw;
@end// Rectangle


@implementation Rectangle
- (void) setFillColor: (ShapeColor) c
{
    fillcolor = c;
}//setFillColor

- (void) setBounds:(ShapeRect) b{
    bounds = b;
}// setBounds

- (void) draw {
    NSLog(@"drawing a Rectangle at (%d %d %d %d) in %@", bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillcolor));
} //draw
@end //Rectangle

//_________________
//ALl about Egg
@interface  Egg  :  NSObject
{
    ShapeColor fillcolor;
    ShapeRect bounds;
}
-(void) setFillColor: (ShapeColor) fillColor;
- (void) setBounds: (ShapeRect) bounds;
- (void) draw;
@end// Egg


@implementation Egg
- (void) setFillColor: (ShapeColor) c
{
    fillcolor = c;
}//setFillColor

- (void) setBounds:(ShapeRect) b{
    bounds = b;
}// setBounds

- (void) draw {
    NSLog(@"drawing a Egg at (%d %d %d %d) in %@", bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillcolor));
} //draw
@end //Egg

int main(int argc, const char * argv[]) {
    id shapes[3];
    
    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] = [Egg new];
    [shapes[2] setBounds:rect2];
    [shapes[2] setFillColor:kBlueColor];
    
    return 0;
} // main

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值