码迷,mamicode.com
首页 > 其他好文 > 详细

OC三大特性之多态

时间:2014-12-12 14:32:58      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   使用   sp   on   div   log   

一.基本概念

多态是基于继承的基础之上的,多态可以使得父类的指针指向子类的对象。

如果函数或参数中使用的是父类类型,可以传入父类、子类对象,但是父类类型的变量不能直接调用子类特有的方法。

Animal类的声明和实现

// 动物
@interface Animal : NSObject
- (void)eat;
@end

@implementation Animal
- (void)eat
{
    NSLog(@"Animal-吃东西----");
}
@end

Dog类继承自Animal类

//
@interface Dog : Animal
- (void)run;
@end

@implementation  Dog
- (void)run
{
    NSLog(@"Dog---跑起来");
}
//重写Animal的eat方法
- (void)eat
{
    NSLog(@"Dog-吃东西----");
}
@end
#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 *a = [Dog new];
    
    //调用方法时会检测对象的真实形象
    [a eat];

    return 0;
}

结果:Dog-吃东西----

 二.多态总结

  1. 没有继承就没有多态
  2. 代码的体现:父类类型的指针指向子类对象
  3. 好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象
  4. 局限性:父类类型的变量 不能 直接调用子类特有的方法。必须强转为子类类型变量后,才能直接调用子类特有的方法

 

OC三大特性之多态

标签:style   blog   io   color   使用   sp   on   div   log   

原文地址:http://www.cnblogs.com/cwhking/p/4159543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!