一、多态:
不同类中定义的同名方法。根据调用方法的实例所属的类,以及方法的返回值类型确定调用的是哪个类里面的方法。
例:
定义两个类:Fraction和Complex:
@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