OC 第一个OC类

来源:互联网 发布:手机淘宝如何删除差评 编辑:程序博客网 时间:2024/05/16 23:34

//

//  main.m

//  第一个OC


#import <Foundation/Foundation.h>

/*

 事物名称:MacBook

 属性:CPU键盘鼠标

 方法:打字玩游戏

 */


//oc中定义一个类,分为声明和实现

//1 类的声明:以@interface开头 @end结尾类名以大写字母开头

//属性必须以{}包围为了符合规范,在属性名称前面加_

//方法分为类方法和对象方法有参数无参数又返回值无返回值

//添加:NSObject是为了使类可以创建对象

@interface Macbook : NSObject

{

    //类的属性是受保护的,通过@public来使类的属性可以被类的对象调用修改

    @public

    int _cpu;

    int _mouse;

}

-(void) getCpu;

//多参数的方法,每个参数前面都得加冒号,所有的数据类型必须用()包起来

//第一个参数以后的参数冒号前可以加上标签,说明参数的含义,防止参数过多赋值不明确,标签也是方法名的一部分

//如果不想每次使用方法都开辟存储空间,并该方法没有使用类的属性,可以定义成类方法

+(int) getMouse : (int)mou cpu:(int)cpu;

@end


//2 类的实现@implementation开头,以@end结尾

//声明类方法就得实现类方法,声明对象方法就实现对象方法

/*

 1 类方法只能通过类调用,对象方法只能通过对象调用

 2 对象方法中可以访问类的属性,类方法中不能直接访问类的属性

 3 调用类方法的效率比调用对象方法的效率高

 4 类方法和对象方法可以相互调用

    4.1对象方法可以直接调用类方法

    4.2类方法调用对象方法的时候需要先创建对象,再调用对象方法(在企业开发中不建议这么使用)

 */

@implementation Macbook


-(void)getCpu{

    //可以在对象方法中直接使用类的属性

    NSLog(@"sum = cpu + mouse : %i",_cpu+_mouse);

    //NSLog(@"sum = cpu + mouse : %i",[Macbook getMouse:1 cpu:1]);

}


//有参数和没参数是完全不同的两个方法

+(int)getMouse:(int)mou cpu:(int)cpu{

    Macbook *mac = [Macbooknew];

    [mac getCpu];

    return mou+cpu;

}

@end

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

    //通过类创建对象给类发个new消息

    //发送消息的格式 [类名/对象名类方法/对象方法];

    //系统做三件事:为类创建出来的对象分配存储空间初始化属性返回对象的地址

    Macbook *mac = [Macbooknew];

    //oc中的类本质是结构体,所以指针其实就是指向结构体

    mac->_cpu = 1;

    mac->_mouse = 2;

    NSLog(@"cpu:%i,mouse:%i",mac->_cpu,mac->_mouse);

    [mac getCpu];

    

    //调用类方法

    int i = [MacbookgetMouse:10cpu:10];

    NSLog(@"getMouse %i",i);

    

    //OC中的NSLogc语言的字符串支持不是很好

    NSString *name =@"你好傻";

    NSLog(@"oc字符串 %@",name);


    return 0;

}


0 0
原创粉丝点击