5 、OC 类的定义和使用

Objective-C中定义类需要分为2个步骤
1. @interface(接口)部分
2. @implementation(实现)部分

创建OC类会自动创建两个文件,分别是*.h文件和*.m文件,h文件就是定义接口部分,m文件就是实现部分。

一、接口部分
@interface用于声明定义类的接口部分,@end表示定义结束
@interface Person : NSObject
{
    //成员变量声明
}
    //方法声明
@end

紧跟类的花括号用于声明该类的成员变量,花括号后面的用于定义方法。
成员变量:用于描述该类的对象的状态数据,成员变量类型可以是任何OC允许的数据类型,成员变量名需要是一个合法的标识符,OC建议成员变量名以下划线(_)开头。
方法声明:用于描述该类的行为
方法声明语法如下

-/+ (方法返回值类型) 方法名:(形参1类型)形参1名  形参2标签:(形参2类型)形参3名…;

方法类型标识:-或者+,-表示该方法是实例方法,+表示该方法是类方法。
方法返回值类型:如果一个函数没有返回值,则需要用void来声明。
方法签名关键字:OC没有硬性的规定每个形参都需要给定一个形参标签,但是我没在编写方法的时候尽量给形参加一个标签,这是一个良好的编程习惯。


二、实现部分
@implementation用于声明类的实现,@end表示实现结束
#import "Person.h"

@implementation Person
{
    //成员变量声明
}

    //方法定义

@end

1.类实现部分可以定义自己的成员变量,成员变量在花括号中声明,声明以后只能在当前类内访问,因此在类实现部分声明变量相当于定义隐藏的成员变量。
2.必须为接口部分的所有方法提供定义,方法定义由方法签名和方法体组成。
3.实现部分也可以自己定义附加的方法,这些方法只能在本类中使用。

三、实例
接口部分:
#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    //变量-实例变量
    int _age;
    char* _name;
}
//无返回值的实例方法
-(void)setName:(char*)name andAge:(int)age;
//有返回值的实例方法
-(NSString*)getInfo;
//类方法
+(void)sayHello;
@end

实现部分:
#import "Person.h"

@implementation Person
{
    int _height;//这个变量只能在本类中使用
}

-(void)setName:(char*)name andAge:(int)age{
    _name = name;
    _age = age;
}

-(NSString*)getInfo{
    [self printMessage];
    return [NSString stringWithFormat:@"姓名:%s,年龄%d",_name,_age];
}

//定义了一个只能在本类中使用的方法
-(void)printMessage{
    NSLog(@"只能在本类中使用的方法");
}

+(void)sayHello{

    NSLog(@"Hello");
}
@end




四、对象的产生和使用
创建对象的语法为
[[类名 alloc] 初始化方法];
alloc是OC的关键字,负责为该对象分配内存空间,创建对象。另外还需要调用初始化方法为该实例执行初始化,NSObject类中定义了一个默认的初始化方法:init,OC中所有类都直接或者间接的继承NSObject,所以类的初始化可以用默认的init方法。

OC中调用方法的语法格式为:
[调用者 方法名:参数 形参标签:参数值…];
调用者可以是类也可以是对象,OC中规定,实例方法必须用实例来调用,而类方法则必须使用类调用。
        //定义Person对象,并赋值
        Person* person = [[Person alloc]init];
        //调用实例方法
        [person setName:"小明" andAge:10];
        NSString*str = [person getInfo];
        NSLog(@"%@",str);
        //调用类方法
        [Person sayHello];








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值