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


一、类

声明类的语法:

      @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;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值