A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© faceseagod 中级黑马   /  2015-10-17 21:32  /  946 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


多态的出现时为了让不同的类能使用同名的方法。这会让程序的可读性大大提高,也降低了编程 难度。
编译时和运行时检查
因为存储在id变量中的对象类型在编译的时候是无法确定的,所以一些事情是需要在运行时才能 够确定。 例如:类Dog只有一个run方法,而类Cat只有一个jump方法,那么下面这段代码在编译的时候就是 会出错
Dog *dog = [[Dog alloc] init]; [dog jump];
因为编译器知道dog是Dog类的一个对象,而当遇到[dog jump]消息的时候,编译器同样知道Dog类 是没有jump方法的,所以在编译阶段就会提出警告。但是如果将代码换成下面的样子在编译阶段 就不会出错
Animal *cat= [[Animal alloc] init]; [(Cat*)cat jump];
[(Cat*)cat jump];
因为在编译阶段编译器并不知道cat中存储的对象的类型是什么,所以在运行的时候程序就会 crash
您需要登录后才可以回帖 登录 | 加入黑马