您的位置:首页 > 移动开发 > Objective-C

Learn Objective‐C,学习笔记03 类别(实现多重继承的方法)

2010-10-26 16:09 781 查看
? 类别是一个类,它是添加了新功能的现有类。

? 使用类别就是为了能够为现有类添加新的方法,不用继承该现有类,就可使用现有类的对象调用添加的方法了。

? 类别可以使类的实现分散在多个文件中

? 类别中不能有变量,类别中没有放变量的位置

? 如果类中的方法和类别中的方法名称相同,这将造成冲突,类别的方法将完全取代类的方法。

? 同一个类的不同类别声明了相同的方法,这将导致不稳定,哪个方法会被调用是不确定的

类别声明:

#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: