多态、动态类型和动态绑定
一、多态
多态在面向对象语言中,接口的多种不同的实现方式即为多态。也就是说,假如去医院看病,同样是看病,要进不同的门诊去看,门诊就是为了实现看病这个功能的接口,不同的病人选择适合自己的门诊,就是这个道理。
注意:
1、 在同一个类中,我们通过相同的函数名,不同的参数或者相同的参数不同的类型;
2、 Import两个不用的类,两个类中可以包含相同的函数名,根据输出调用的时候自动判别属于哪个类来输出。以下事实:objective-c系统内系统总是跟踪对象所属的类,也就是说,先判定对象所属的类,并因此确定运行而不是编译时需要动态调用的方法。
3、 两种方法调用的意思:[f1 setTo : 2 over:5]; 2/5 [c1 setReal:10.0 andImaginary:2.5]; 10+2.5i
4、 Id类型在定义的时候前面不需要加上*。
二、动态
Id数据类型与静态类型(为什么不全部用id)
Id类型能够表示全部的数据类型,为什么不全部使用id类型呢?
1、 静态类型能更好地在程序编译阶段而不是在运行时指出错误。如果把它留到运行时,即使没有错误,在使用的过程中用户会发现有一些特定的对象不能够被识别。
2、 使用静态类型的另一个原因是因为他能够提高程序的可读性;
类的一些使用
[mysquare class] 可以知道属于哪个类;
[myfraction isMemberOf:[fraction class]] 可以知道myfraction是不是fraction的实例;
@try处理异常
结构如下:
@try
{
执行体;
}
@catch(NSException *exception)
{
异常抛出执行体;
}
把执行代码用@try包括起来,当执行中出现异常的时候,就立刻跳转到@catch中,然后在这里对于异常的处理编写代码。