Objective C2.0学习(十 多态)

以下的几章将会讲解三个关键的概念: 多态,动态类型和动态绑定。
多态:来自不同类的对象可以定义共享相同名称的方法

Complex.h接口文件,表示程序中的复数
#import <Foundation/Foundation.h>
@interface Complex: NSObject
{
double real;
double imaginary;
}
@property double real, imaginary;
-(void) print;
-(void) setReal: (double) a andImaginary: (double) b;
-(Complex *) add: (Complex *) f;
@end

Complex.m实现文件
#import "Complex.h"
@implementation Complex
@synthesize real, imaginary;
-(void) print
{
NSLog(@"%g + %gi",real,imaginary);
}
-(void) setReal: (double) a andImaginary: (double) b
{
real = a;
imaginary = b;
}
-(Complex *) add: (Complex *) f
{
Complex *result = [[Complex alloc] init];
[result setReal: real + [f real] andImaginary: imaginary + [f imaginary]];
return result;
}
@end

main.m测试程序
#import "Fraction.h"
#import "Complex.h"
int main...
{
...
Fraction *f1 = [[Fraction alloc] init];
Fraction *f2 = [[Fraction alloc] init];
Fraction *fracResult;

Complex *c1 = [[Complex alloc] init];
Complex *c2 = [[Complex alloc] init];
Complex *compResult;

compResult = [c1 add: c2];
fracResult = [f1 add: f2];

...
}
注意,Fraction和Complex类都包含add:和print方法。
系统如何知道执行哪个方法呢?

程序运行时,知道第一条消息的接收者是一个Complex对象,因此,选择定义在Complex类中的add:方法。

前面提到,使用不同的类共享相同方法名称的能力称为多态。它能使你开发一组类,这组类中的每一个类都能相应相同的方法名。每个类的定义都封装了相应特定方法所需的代码,这就是的它肚里与其他的类定义。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值