1.类的定义:
//文件MyClass.h
<span style="font-size:14px;">#import <Foundation/Foundation.h>
@interface MyClass : NSObject {//@interface申明一个新类 类名:基类
@public//公开成员变量
NSString *name;//字符串成员变量声明
@private//私有成员变量
int age;//整形成员变量
}
-(NSString*)getName;//定义类成员方法 - (返回类型)方法名
-(int)age;//获取age的方法,通常Object-C里面取值不用getXXX的形式,直接用XXX
-(id)initWithName:(NSString*)newName AndAge:(int)newAge;//定义构造方法 - (返回类型)方法名:(类型)参数名:(类型)参数名
+(void)className;//定义静态方法,与类方法不一样,使用+
@end//类定义结束</span>
2.类的实现
//文件MyClass.m
<span style="font-size:14px;">#import "MyClass.h"
@implementation MyClass//@implementation 实现类
-(id)initWithName:(NSString*) newName AndAge:(int) newAge{//实现构造方法
self=[super init];//调用基类的构造方法,self相当于java中的this,super相当于java中的super
if(self){
name=newName;
age=newAge;
}
return self;
}
- (id)init{//默认的构造方法,要么返回完整的对象,要么抛出异常
return [self initWithName:@"fred" AndAge:24];//调用其他构造方法
}
-(NSString*) getName{//成员方法,返回name
return name;
}
-(int) age{//成员方法,返回age
return age;
}
- (void)dealloc//销毁,java中有垃圾回收机制,不需要管理对象销毁,类似于C++中的析构方法
{
[name release];//先销毁成员变量
[super dealloc];//最后掉用基类的销毁
}
+(void)className{//实现类静态方法
NSLog(@"MyClass");
}
@end//结束实现</span>
3.调用样例
//文件main.m
<span style="font-size:14px;">#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "MyClass.h"//引入头文件
int main(int argc, char *argv[])
{
// 一般情况下不动main函数
// MyClass* me=[[MyClass new ] autorelease];//new 调用默认构造方法
// MyClass* me=[[MyClass alloc]initWithName:@"qiuqiu-球球" AndAge:24];//alloc调用自定义构造方法
//
// NSLog(@"%@",me->name);//直接访问公开的成员变量,%@是对象的占位符
//
// NSLog(@"myname is %@, age is %d",[me getName], [me age]);//%d是数字的占位符
//
// [MyClass className];//调用类静态方法
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}</span>