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

多态 主要由继承和协议来实现

时间:2015-12-13 15:25:55      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

判断标准 协议只是定义空方法 继承有默认实现方法  
// main.m // 多态 #import <Foundation/Foundation.h> #import "Animal.h" #import "Cat.h" #import "Tiger.h" #import "Person.h" /*多态 //1.一种方法有多种不同的实现 //例如 Animal run-> 猫 狗 乌龟 //2.方法的动态绑定(runtime运行期)调用哪个对象的哪个方法 3.向上类型转换 upcasting */ int main(int argc, const char * argv[]) { @autoreleasepool { Cat *c = [[Cat alloc]init]; Tiger *t = [[Tiger alloc]init]; Person *p = [[Person alloc]init]; [p care:t]; } return 0; }
//
//  Animal.h

#import <Foundation/Foundation.h>

@interface Animal : NSObject
-(void)run;
@end
//
//  Animal.m

#import "Animal.h"

@implementation Animal
-(void)run{
    NSLog(@"动物跑...");
}
@end
//  Cat.h
#import <Foundation/Foundation.h>
#import "Animal.h"
@interface Cat : Animal

@end
//
//  Cat.m

#import "Cat.h"

@implementation Cat
-(void)run{
    NSLog(@"猫步..");
}
@end
//
//  Tiger.h
#import <Foundation/Foundation.h>
#import "Animal.h"
@interface Tiger : Animal

@end
//
//  Tiger.m

#import "Tiger.h"

@implementation Tiger
-(void)run{
    NSLog(@"老虎跑。。");
}
@end
//
//  Person.h
#import <Foundation/Foundation.h>
#import "Animal.h"


@interface Person : NSObject

-(void)care:(Animal*)a;  //OCP  开闭原则 扩展是开放的 修改是关闭的
/*
-(void)careCat:(Cat*)c;
-(void)careTiger:(Tiger*)t;

 */
@end
//
//  Person.m
//  多态

#import "Person.h"

@implementation Person
-(void)care:(Animal*)a{
    /*
     这地方实现了
     1.多态性
     2.向上类型转换
     3.方法动态绑定
     */
    [a run];
}
@end

 

多态 主要由继承和协议来实现

标签:

原文地址:http://www.cnblogs.com/WJR12/p/5042670.html

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