5 、OC 类的定义和使用

来源:互联网 发布:网络诈骗800元 编辑:程序博客网 时间:2024/05/28 20:19
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];








0 0
原创粉丝点击