小白学开发(iOS)OC_定义一个类(2015-07-21)

 //
//  main.m
//  定义一个类
//
//  Created by admin on 15/7/22.
//  Copyright (c) 2015年 admin. All rights reserved.
//

#import <Foundation/Foundation.h>
/*
    1. 定义一个类有三部分:
 
       类名
            要求:> 类名的首字母 必须 大写,
                 > 类名不能有下划线
       属性(成员变量)
            要求:> 属性名称必须以下划线开头
 
       行为(方法)
 
    2. 完整的定义一个类分为两部分:
            > 类的声明
            > 类的实现
*/
/*
    2.1 类的声明
            > 在@interface @end 之间写类的声明,@end是用来告知什么时候声明结束
            > 这里需要声明的是,类的属性,和行为(方法)
            > 所有需要继承顶层父类:NSObject类
*/
typedef enum
    {
//      k + 枚举类型 + 含义
        kIColorBlack,   //  黑色
        kIColorWrite    //  白色
    }IColor;
/*
    例: 类的声明
*/
//  声明属性
@interface Iphone :NSObject
{
    @public             //  说明成员变量是可公开访问的类型
    
    int _cpu;           //  手机的cpu
    float _size;        //  手机尺寸
    IColor _clolr;      //  手机颜色, 这里颜色使用枚举类型,并起了别名
}
/*
    声明方法
        > 对象方法以 - 号开头, 类方法一般用 + 开头
        > 数据类型一定要用小括号括住,无论是方法的返回值类型还是方法中参数的类型
        > OC方法中小括号就一个作用,用来括主数据类型
*/
- (void)aboutMyPhone;   //  声明一个无返回值,无参数的关于手机信息的方法
- (char *)recepitMessage;   //  声明一个有返回值无参数的接收短信的方法
- (void)sendSingal:(char *)number;  //  声明一个有参数无返回值的方法,
//                注意:> 当方法有参数的时候,必须在参数类型前加上一个冒号
//                     > 冒号也是方法名的一部分,即这里方法名为 sendSingal:
- (void)sendMessageWithNumber:(char *)number andMessageContent:(char *)content;
//      这是一个两个参数的方法,苹果提倡我们把方法名写的跟句子一样,这里第一个参数为number 第二个为content

@end    //  至此表示方法声明结束,@end 不能省略
/*
     2.2 类的实现
             > 主要用来实现声明当中的方法,说清楚方法中要干什么
             > 在@implementation @end 之间写类的实现,@end是用来告知什么时候实现结束
*/
/*
     例: 类的实现
*/
@implementation Iphone

- (void)aboutMyPhone
{
    NSLog(@"查看手机信息!");
}

- (char *)recepitMessage
{
    _cpu ++;                    // 注意:对象方法中,可以直接访问并使用对象成员
    return "shou ji xin xi ";
}

- (void)sendSingal:(char *)number
{
    NSLog(@"拨打电话给 %s", number);
}

-(void)sendMessageWithNumber:(char *)number andMessageContent:(char *)content
{
    NSLog(@"发短信给 %s, 内容是 %s", number, content);
}

@end        //  至此表示 类实现结束 @end不能省略

int main(int argc, const char * argv[]) {

/*
    注意: > 在OC中如过想执行一些行为(方法),就要立即写 [类名/对象 方法名称]
          > 用类名 调用的是类方法
          > 用对象 调用的是对象方法
*/
/*
          > 这里是调用类方法,即new方法,这个方法它继承的NSObject的方法,作用是new出一个Iphone对象
          > 这句话将会做一下三件事:
                ①、开辟存储空间
                ②、初始化成员变量(写在类声明中的属性叫:成员变量 也叫做 实例变量)
                ③、返回指针地址  (既然返回指针,所以就必须有指针来接收这个结果)
*/
    [Iphone new];
/*
          > 定义一个指针变量p指向Iphone类型对象
          > 指针保存了对象的地址,我们就可以把它叫做某个对象
*/
    Iphone *p = [Iphone new];
/*
          > OC中要想操作一个对象的属性或者行为(方法),必须通过指针来操作
          > 通过指针p来操作对象中的属性、行为
*/
    p->_cpu = 1;
    p->_size = 4.0;
    p->_clolr = kIColorBlack;
/*
          > 利用对象调用对象方法,调用方法在OC中称之为“发送消息”
*/
    [p sendSingal:"nihaoma"];
    [p sendMessageWithNumber:"1212" andMessageContent:"zhe shi xiao xi"];
    char *result = [p recepitMessage];
    NSLog(@"result = %s", result);
/*
          > 取出p指向对象中的属性
*/
    int number = p->_cpu;
    NSLog(@"cpu = %d, size = %.1f, clolr = %d", number, p->_size, p->_clolr);
/*
          > 每new一次,即创建一个新的对象,都会重新开辟一块存储空间,互不干扰,
            一个类只占用一块存储空间,一个类可以创建无数个对象
*/
    return 0;

}

//  main.m
//  类_注意点
//
//  Created by admin on 15/7/22.
//  Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>


@interface Person : NSObject
{
    int age;
    char *name;
    float score;
}
- (char *) eat;
@end


@implementation Person


//- (char *)eat
//{
//
//    return "ni chi le me ?";
//}


@end


int main(int argc, const char * argv[]) {


/*
    1. 只有类的声明,没有类的实现是错误的,系统会报错
 
    2. 声明和实现的结尾不能缺少@end
    
    3. 类的声明中不能写实现,实现中不能写声明,必须分开写
 
    4. 类的声明和实现不能写到某个函数里面


    5. 类的成员变量必须写到声明的大括号中
 
    6. 在声明成员变量的时候不能直接赋值
 
    7. OC是弱语法,在没有声明只有实现的时候,是可以编译通过的(实际开发中不能这样,会带来安全隐患)
*/
/*
     经典错误:  没有实现的时候系统报错
     -[Person eat]: unrecognized selector sent to instance 0x100204790'
*/
    Person *person = [Person new];
    char *result = [person eat];
    NSLog(@"result = %s", result);
    
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值