您的位置:首页 > 其它

类、对象、方法、super、self、init方法

2012-09-20 08:46 323 查看
一、类
声明类的语法:
@interface 类名 : 被继承类<协议,...>
[{实例变量;}]
[实例方法声明]
@end
实现类的语法:
@implementation 类名
[实例方法实现]
@end
例子:
Car.h
#import <Foundation/Foundation.h>
@interface Car : NSObject{
NSString *name;
int number;
}
-(NSString*) name;
-(void) setnumber:(int) number;
@end/*Car*/
Car.m
#import "Car.h"
@implementation Car
-(NSString*) name{
return @"BWM";
}
-(void)setnumber:(int) num{
number = num;
return number;
}
@end

说明:
1、允许有空类和空实现。

二、对象(instance)
创建对象两种语法:
1、类名 *对象指针名 = [[类名 alloc] init];
2、类名 *对象指针名 = [类名 new];(Objective-C 2.0以后支持)
说明:
1、两种写法在功能上完全相同。

三、方法(methods)
实例方法声明语法:
-(返回类型) 方法名[:(参数类型) 参数名 方法名:(参数类型) 参数名...]
类方法声明语法:
+(返回类型) 方法名[:(参数类型) 参数名 方法名:(参数类型) 参数名...]
说明:
1、类方法不能访问实例变量,但可以访问静态变量。
2、实例方法中获取实例变量值getter不加get,并且与实例变量同名。
3、实例方法中设置实例变量值setter可以加set,例如setnumber。
4、开头的负号(-)通知Object-C编译器,该方法是一个实例方法。
5、类方法不需要实体就可以调用。
6、实例方法总是可以直接访问实例变量。
例子:
/**
* total.h
* 本程序目的:统计创建了多少实例对象
**/
#import <Foundation/Foundation.h>
static int count;
@interface Total : NSObject
+(int) initCount;
+(void) initialize;
@end/*Tatal*/

/**
* total.m
**/
#import "total.h"
@implementation Total
-(id) init{
self = [super init];
count++;
return self;
}

+(int) initCount{
return count;
}

+(void) initialize{
count = 0;
}
@end

/**
* main.m
*/
#import "total.h"
int main(int argc,const char** argv){
Total *total1 = [[Total alloc] init];
Total *total2 = [[Total alloc] init];
NSLog(@"there are %i instances.",[Total initCount]);
[total1 release];
[total2 release];
return (0);
}

四、super

五、self
self相当于C++中的this指针,它也是用于指向当前对象的一个指针。值得注意的是,每次向方法传递消息的同时,self也会跟随作为参数传过去。Objective-C内部对方法接收了这个隐藏参数,所以在方法中可以使用self。例如:
-(int) number{
return number;
}
-(void) printCarNumber{
NSLog(@"The car's number is %i",[self number]);
}

六、init方法
init方法是创建对象时必须调用的一个方法,相当于C++中的构造函数。我们可以根据自己的需要重写这个方法。例如:
-(id) init{
self = [super init];//必须先call父类,实际上是先构造父类,因为只有构造父类好后才可能构造子类。这是Objective-C的标准写法。
if(self){//如果构造失败,返回nil,表示空对象
[self setLevel:0];
}
return self;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐