1. 程式人生 > >Objective-C學習筆記---類別(實現多重繼承的方法)

Objective-C學習筆記---類別(實現多重繼承的方法)

✓ 類別是一個類,它是添加了新功能的現有類。
✓ 使用類別就是為了能夠為現有類新增新的方法,不用繼承該現有類,就可使用現有類的物件呼叫新增的方法了。
✓ 類別可以使類的實現分散在多個檔案中.
✓ 類別中不能有變數,類別中沒有放變數的位置.
✓ 如果類中的方法和類別中的方法名稱相同,這將造成衝突,類別的方法將完全取代類的方法。
✓ 同一個類的不同類別聲明瞭相同的方法,這將導致不穩定,哪個方法會被呼叫是不確定的.

類別宣告:
#import "ClassName.h"
@interface ClassName ( CategoryName )
方法宣告
@end

類別實現:
#import "ClassName+CategoryName.h” //宣告檔案
@implementation ClassName ( CategoryName )
方法實現
@end

例項:

FractionMath.h
#import "Fraction.h"
@interface Fraction (Math)
-(Fraction*) add: (Fraction*) f;
-(Fraction*) mul: (Fraction*) f;
-(Fraction*) div: (Fraction*) f;
-(Fraction*) sub: (Fraction*) f;
@end
FractionMath.m
#import "FractionMath.h"
@implementation Fraction (Math)
-(Fraction*) add: (Fraction*) f {
return [[Fraction alloc] initWithNumerator: numerator * [f denominator] +denominator *
               [f numerator] denominator: denominator * [f denominator]];
}
-(Fraction*) mul: (Fraction*) f {
return [[Fraction alloc] initWithNumerator: numerator * [f numerator]
             denominator: denominator * [f denominator]];
}
-(Fraction*) div: (Fraction*) f {
return [[Fraction alloc] initWithNumerator: numerator * [f denominator]
          denominator: denominator * [f numerator]];
}
-(Fraction*) sub: (Fraction*) f {
return [[Fraction alloc] initWithNumerator: numerator * [f denominator] -denominator * [f numerator]
                denominator: denominator * [f denominator]];
}
@end
main.m
#import <stdio.h>
#import "Fraction.h"
#import "FractionMath.h"
int main( int argc, const char *argv[] ) {
// create a new instance
Fraction *frac1 = [[Fraction alloc] initWithNumerator: 1 denominator: 3];
Fraction *frac2 = [[Fraction alloc] initWithNumerator: 2 denominator: 5];
Fraction *frac3 = [frac1 mul: frac2];

[frac1 print];
printf( " * " );
[frac2 print];
printf( " = " );
[frac3 print];
printf( "/n" );
// free memory
[frac1 release];
[frac2 release];
[frac3 release];
return 0;
}
output

1/3 * 2/5 = 2/15

Form:http://student.csdn.net/space.php?uid=121497&do=blog&id=46861