OC-6-三大特性:多态

来源:互联网 发布:oracle单条数据被锁 编辑:程序博客网 时间:2024/04/30 11:27

---------- CornerFly真诚期待与您交流! ----------

一、概述

1、多态:某一类事物的多种形态,OC对象具有多态性。

2、注意点:没有继承就没有多态

3、动态的好处:如果函数\方法中使用的是父类类型,可以传入父类,子类对象

4.局限性:父类类型的变量,不能直接调用子类特有的方法,如果想调用,必须强转为子类类型的变量后,才能直接调用子类特有的方法。


二、代码体现


1、父类类型的指针指向子类对象,调用方法时会检测子类对象类型。

Dog *d = [Dog new]; // Dog 类型的对象

Animal *a = [Dog new]; // 多态

2、代码体现

#import <Foundation/Foundation.h>// 动物@interface Animal : NSObject- (void)eat;@end@implementation Animal- (void)eat{NSLog(@"Animal--吃东西----");}@end// 狗@interface Dog : Animal- (void)run;@end@implementation Dog- (void)run{NSLog(@"Dog---跑起来");}- (void)eat{NSLog(@"Dog--吃东西----");}@end// 这个函数专门用来喂动物的// 如果参数中使用的是父类类型,可以传入父类,子类对象void feed(Animal *a){[a eat];}int main(){// 多态:父类类型的指针指向子类对象,Animal *aa = [Dog new]; // 将Animal类型的指针强制转换为Dog类型Dog *dd = (Dog *)aa;// 多态的局限性:父类类型的变量,不能直接调用子类特有的方法// [aa run];[dd run];[dd feed];return 0;}
0 0