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

[黑马程序员]Objective-C 面向对象三大特性之多态

时间:2015-04-03 19:12:20      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:

什么是多态?

多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单地说就是:允许将子类类型的指针赋值给父类类型的指针。

简单示例

#import <Foundation/Foundation.h>

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

@implementation Animal

-(void) eat{
    NSLog(@"Animal eating...");
}

@end

@interface Dog : Animal
@end

@implementation Dog

-(void) eat{
    NSLog(@"Dog eating...");
}

@end

int main(){
    
    // 使用Dog类指针调用
    Dog *dog = [Dog new];
    [dog eat];
    
    // 使用Animal类型指针调用
    Animal *animal = [Dog new];
    [animal eat];
    
    return 0;
}

这两种调用方式都会调用dog类中的eat方法,而不是第二种调用animal类中的eat方法。

多态的好处

考虑一个需求,当我们需要用一个方法来执行喂狗这个动作时(这个例子实际上不太好,但实际需求也许比这更坑爹,所以不妨一起这样假设一下)。

我们就必须

[黑马程序员]Objective-C 面向对象三大特性之多态

标签:

原文地址:http://www.cnblogs.com/imabel/p/4390662.html

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