OC语言学习01-类与对象

来源:互联网 发布:中国不成熟的网络环境 编辑:程序博客网 时间:2024/05/19 16:07

一、定义一个类:

#import <Foundation/Foundation.h>


//定义一个Student类,类名Student

//@interface定义一个类的关键字

//@end 表示类定义结束

//NSObject: 根类(基类)


//系统类的命名NS开头(Next Step是一家公司的名字)

@interface Student :NSObject

{

   //实例变量的定义,命名以_开头,

    NSString *_name;//NSStringOC系统提供的字符串类

    NSInteger _age; //NSIntegerlong类型

}

//构造方法

//id返回值是id类型的一个对象,

//-号说明该方法是一个对象方法(实例方法)

//方法名:init

-(id)init;


//seter方法:修改实例变量的值

//有一个传入参数 name,无返回值

//方法名 setName

-(void)setName:(NSString *)name;

-(void)setAge:(NSInteger)age;

//有两个传入参数,nameage

-(void)setName:(NSString*)name setAge:(NSInteger)age;


//getter方法:读取实例变量的值

-(NSString *)name;

-(NSInteger)age;


//定义一个类方法

//定义类方法用+

+(void)testStudent;


@end

二、实现一个类

//实现一个类关键字@implementation

//@end 结束

@implementation Student

-(id)init {

    self = [superinit];//self表示调用者,指向调用者的对象指针变量

    //super是调用父类方法的关键字

    if (self) {

        _name =@"小华";

        _age =20;

    }

    returnself;

}

//实现setter方法访问修改实例变量的值

-(void)setName:(NSString *)name {

    _name = name;

}


-(void)setAge:(NSInteger)age {

    _age = age;

}


-(void)setName:(NSString *)name setAge:(NSInteger)age {

    _name = name;

    _age = age;

}


//实现getter方法读取实例变量的值

-(NSString *)name {

    return_name;

}


-(NSInteger)age {

    return_age;

}


//实现这个类方法,用类名来调用测试当前类是否可用

+(void)testStudent {

    

    NSLog(@"这是一个类方法!");

}


@end


三、调用方式


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

    @autoreleasepool {

       //Student类通过alloc类方法创建一个对象,然后调用构造方法init对对象进行初始化

        Student *stu = [[Student allocinit];

        NSLog(@"name = %@, age = %li",[stu name] , [stu age]);

        /* 

         输出结果:name =小华, age = 20

         */

        //调用setter方法修改参数

        [stu setName:@"小明"];//@"小明"表示字符串对象

        [stu setAge:25];

        NSLog(@"name = %@, age = %li",[stu name], [stu age]);

        /* 

         输出结果: name =小明, age = 25         

         */

        //或者直接调用两个参数的setter方法

        [stu setName:@"小芳"setAge:21];

        // %@是打印对象占位符,%li是打印long类型占位符

        NSLog(@"name = %@, age = %li",[stu name], [stu age]);

        /*

         输出结果: name =小芳, age = 21

         */

        //或者直接调用两个参数的setter方法

        

        //调用类方法

        [Student testStudent];

        /*

        输出结果:这是一个类方法!

         */

        //或者直接调用两个参数的setter方法

    }

    return0;

}