类的多态,动态类型,动态绑定

来源:互联网 发布:tomcat 远程调试端口 编辑:程序博客网 时间:2024/06/14 20:59

一、多态:

不同类中定义的同名方法。根据调用方法的实例所属的类,以及方法的返回值类型确定调用的是哪个类里面的方法。

例:

定义两个类:FractionComplex

@interface Fraction

{

       int numeric;

       int denometer;

}

-(void) setNumeric : (int) n andDenometor : (int) d;

-(void) print;

@end

 

@interface Complex

{

       double real;

       double img;

}

-(void) setReal : (double) r andImg : (double) i;

-(void) print;

@end

在主函数中,

 

Fraction *fraction = [[Fraction alloc] init];

Complex *complex = [[Complex alloc] init];

[fraction setNumeric : 2 andDenometor : 1];

[complex setReal : 3 andImg 4];

[fraction print];

[complex print];

则分别调用各自类的输出函数进行输出。

二、id类型和动态绑定

id数据类型是一种通用的数据类型,可以用于存储任何类的对象。

例如在主函数中调用如下代码,可以得到和上面相同的效果。(注意:id定义时没有*

Fraction *fraction = [[Fraction alloc] init];

Complex *complex = [[Complex alloc] init];

id dataVal = fraction;

[dataVal setNumeric : 2 andDenometor : 1];

[dataVal print];

dataVal = complex;

[dataVal setReal : 3 andImg 4];

[dataVar print];

另外,id数据类型包含的变量的类型在编译时不检查,在运行时检查。也就是说如果id类型的变量调用的方法不属于该对象的类,则在运行时才会报错。

三、有关类的函数

四、使用@try进行异常处理

C语言中,异常处理基本相同

@try

{

\\代码块

}

@catch( NSException e)

{

}

另外还有@throw@final

0 0
原创粉丝点击