Objective-C的分类和协议

#import <Foundation/Foundation.h> 


//define the Fraction class 


@interface Fraction : NSObject 


{ 


//声明实例变量 


int numerator; 


int denominator; 


} 


//将实例变量转换为属性 


@property int numerator,denominator; 


  


//定义实例方法 


-(void) setTo: (int) n over: (int) d; 


-(Fraction *) add: (Fraction *) fraction; 


-(void) reduce; 


-(double) convertToNumber; 


-(void) print; 


@end; 

然后,从接口部分删除add:方法,并将其添加到新分类,同时添加其他三种要实现的数学运算.新MathOps分类的接口部分应该如下所示.

#import "Fraction.h" 


#interface Fraction (MathOps) 


-(Fraction *) add: (Fraction *) f; 


-(Fraction *) mul: (Fraction *) f; 


-(Fraction *) sub: (Fraction *) f; 


-(Fraction *) div: (Fraction *) f; 


@end;  

注意:这既是接口部分的定义,也是现有接口部分的扩展.因此必须包括原始接口部分.这样编译器就知道Fraction类.

@implementation Fraction(MathOps) 


//code for category methods 


@end; 
@protocol NSCopying 


- (id)copyWithZone: (NSZone *) zone; 


@end;

相关推荐