---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
一.构造方法
构造方法是用来初始化对象的方法,是一个对象方法以“-”开头
如:-(id) init
重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值
1.重写构造方法的注意点
先调用父类的构造方法[superinit]
再调用子类内部成员变量的初始化
2.书写规范
一定是对象方法,一定“-”开头
返回值一般是id 类型
方法名一般以init 开头
如:
-(id) init
{
if (self = [superinit]) //固定写法:为了让对象创建出来,成员变量有一些固定的值
{
_age= 10; //可以动态改变成员变量
}
return self;
}
二 . 分类
分来可以给某个类扩充一些方法(不能修改原来的代码)
分类的作用:在不改变原来内容的基础上,可以为类增加一些方法
写法格式:
@interface 类名(分类名称)
@end
@implementation 类名(分类名称)
如:
@interface Person(MJ)
@end
@implementation Person(MJ)
@end
分类的使用注意:
1.分类只能增加方法,不能增加成员变量
@interface Person(MJ)
-(void)run;
@end
2.分类方法实现中可以访问原来类中的成员变量
@interface Person(MJ)
-(void)fangFa;
@end
@implementation Person(MJ)
-(void)fangFa
{
NSLog(@"%f", _wegiht);
}
@end
3.分类可以重新实现原来类中的方法,但是覆盖原来的方法,会导致原来的方法,无法 使 用
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Person+MJ.h"
@interface Person //人这个类的声明
-(void)run; //方法声明
@end
@implementation Person //人这个类实现
-(void)run //方法实现
{
NSLog(@"人跑起来");
}
@end
@interface Person(MJ) //人分类的声明
-(void)run; //方法声明
@end
@implementation Person(MJ) //人分类的实现
-(void)run //方法实现
{
NSLog(@"分类跑起来");
}
@end
int main()
{
Person *p = [[Person alloc]init];
[p run]; //调用方法
}
程序结果是:分类跑起来
在主函数调用run方法,原来类中的run方法被覆盖了,调用了分类中的run方法
4.方法调用的优先级:分类最后参与编译的分类优先 -> 原来类 -> 父类
---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------