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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaobei 中级黑马   /  2015-11-3 18:09  /  690 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

父类指针指向子类对象,多态的使用方法、好处、限制见下段代码例子:
#import
//多态:父类指针指向子类指针
@interface Animal : NSObject
- (void) eat;
@end
@implementation Animal
- (void) eat
{
    NSLog(@"Animal吃东西!");
}
@end
@interface Dog : Animal
- (void) run;
@end
@implementation Dog
- (void) eat
{
    NSLog(@"Dog吃东西!");
}
- (void) run
{
    NSLog(@"Dog跑起来!");
}
@end
//多态的好处:喂动物的函数(既可以喂狗、也可以喂其他动物,如此可以减少代码量)
//传入父类对象,在具体调用的时候既可以传入父类对象,也可以传入子类方法
void feed(Animal *animal)
{
    NSLog(@"喂动物!");
}
int main()
{
    //指针动态检测指向的对象的真实类型
    Animal *a = [Dog new];//多态
    [a eat];
    //多态的限制:父类中没有run方法,当用指向父类的指针多态指向此方法时,编译器会报错(可运行),不建议这么做,此处用强制转换
    Dog *dd = (Dog *) a;
    [dd run];
    return 0;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马