类的多态,动态类型,动态绑定
2013-12-18 23:44
246 查看
一、多态:
不同类中定义的同名方法。根据调用方法的实例所属的类,以及方法的返回值类型确定调用的是哪个类里面的方法。
例:
定义两个类: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
不同类中定义的同名方法。根据调用方法的实例所属的类,以及方法的返回值类型确定调用的是哪个类里面的方法。
例:
定义两个类: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
相关文章推荐
- 四、多态、动态类型和动态绑定
- 多态,动态类型,动态绑定
- Objective-c 特性之多态、动态类型和动态绑定
- 语言多态、动态类型和动态绑定
- 解析Objective-C中多态、动态类型和动态绑定
- 9-多态、动态类型和动态绑定
- Objective-C 学习笔记 9 多态,动态类型,动态绑定
- 初探Object-c 3 :多态,动态类型,动态绑定
- 多态、动态类型和动态绑定
- Objective-C多态,动态类型识别,动态绑定
- Objective-C程序设计第九章---多态、动态类型和动态绑定
- objective-c学习笔记第六章《objective-c 多态,动态类型,动态绑定与java中的区别》
- iOS开发笔记系列-基础3(多态、动态类型和动态绑定)
- Objective-c 特性之多态、动态类型和动态绑定
- objective-c 多态 ——动态类型 id 的使用(与 C# 的比较说明)
- Objective-C多态:动态类型识别+动态绑定+动态加载
- oc 动态类型和动态绑定
- objective-c 多态 ——动态类型 id 的使用(与 C# 的比较说明)
- iOS动态类型和动态绑定
- Objective-C多态:动态类型识别+动态绑定+动态加载