Categroy类别,又称为扩展类,在类的原基础上扩展方法,且不可添加变量,如果扩展的方法与原始类中的方法相同,则会隐藏原始方法,且不可在扩展方法中通过super调用原始方法,这里与继承不同。
定义: 下面演示在人的基础扩展为学生
定义类
Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property(retain) NSString *name;
@property(nonatomic,assign) int age;
@end
Person.m
#import "Person.h"
@implementation Person
@end
扩展
Person+Student.h 约定,类别的文件名为 扩展类+类别名.h
#import "Person.h"
@interface Person (Student)
-(void)studing;
@end
Person+Student.m
#import "Person+Student.h"
@implementation Person (Student)
-(void)studing{
NSLog(@"学习ing");
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Person+Student.h"//导入时导入扩展的那个文件
int main(int argc, const char * argv[])
{
@autoreleasepool {
Person *p = [[Person alloc] init];
[p studing];
}
return 0;
}