OC3-父类指针指向子类对象
2015-06-17 13:18
399 查看
// // Cat.h // OC3-父类指针指向子类对象 // // Created by qianfeng on 15/6/17. // Copyright (c) 2015年 qianfeng. All rights reserved. // #import "Animal.h" @interface Cat : Animal { float _height; } @property (assign,nonatomic)float height; @end // // Cat.m // OC3-父类指针指向子类对象 // // Created by qianfeng on 15/6/17. // Copyright (c) 2015年 qianfeng. All rights reserved. // #import "Cat.h" @implementation Cat -(void)printAnimalFood { NSLog(@"cat like to eat fish"); } -(NSString *)description { return [NSString stringWithFormat:@"name=%@,age=%li,height=%.2f",_name,_age,_height]; } @end
// // Dog.h // OC3-父类指针指向子类对象 // // Created by qianfeng on 15/6/17. // Copyright (c) 2015年 qianfeng. All rights reserved. // #import "Animal.h" @interface Dog : Animal { float _weight; } -(void)printAnimalHaHa; @property (assign,nonatomic) float weight; @end // // Dog.m // OC3-父类指针指向子类对象 // // Created by qianfeng on 15/6/17. // Copyright (c) 2015年 qianfeng. All rights reserved. // #import "Dog.h" @implementation Dog -(void)printAnimalFood { NSLog(@"dog like to eat bone"); } //-(NSString *)description //{ // return [NSString stringWithFormat:@"name=%@,age=%li,weight=%.2f",_name,_age,_weight]; //} -(void)printAnimalHaHa { NSLog(@"HaHa"); } @end
// // Animal.h // OC3-父类指针指向子类对象 // // Created by qianfeng on 15/6/17. // Copyright (c) 2015年 qianfeng. All rights reserved. // #import <Foundation/Foundation.h> @interface Animal : NSObject { NSString *_name; NSInteger _age; } @property (copy,nonatomic)NSString *name; @property(assign,nonatomic)NSInteger age; -(void)printAnimalFood; @end // // Animal.m // OC3-父类指针指向子类对象 // // Created by qianfeng on 15/6/17. // Copyright (c) 2015年 qianfeng. All rights reserved. // #import "Animal.h" @implementation Animal -(void)printAnimalFood { NSLog(@"-----Animal"); } -(NSString *)description { return [NSString stringWithFormat:@"name111=%@,age=%li",[self name],self.age]; } @end
// // main.m // OC3-父类指针指向子类对象 // // Created by qianfeng on 15/6/17. // Copyright (c) 2015年 qianfeng. All rights reserved. // #import <Foundation/Foundation.h> #import "Dog.h" #import "Cat.h" #import "Animal.h" void showAnimalFood(Animal *ani) { [ani printAnimalFood]; } int main(int argc, const char * argv[]) { @autoreleasepool { Dog *xiaohei =[[Dog alloc] init]; xiaohei.name=@"xiaogei"; xiaohei.age=12; xiaohei.weight=12.6; //[xiaohei description]; NSLog(@"%@",xiaohei); Cat *xiaomao =[[Cat alloc] init]; xiaomao.name=@"xiaomao"; xiaomao.age=12; xiaomao.height=12.6; //[xiaohei description]; NSLog(@"%@",xiaomao); //父类的对象指针可以指向子类的对象 //调用的方法看具体的对象类型,先从子类查找对应的方法实现,如果子类没有实现对应的方法,跳到父类查找对应的方法实现,如果父类没有实现对应的方法,再跳到父类的父类查找对应的方法实现. Animal *ani =xiaohei; [ani printAnimalFood]; ani=xiaomao; [ani printAnimalFood]; showAnimalFood(xiaomao); showAnimalFood(xiaohei); //根据传入的不同的对象,做出不同的响应.多态 } return 0; }
相关文章推荐
- nyoj 1022 最少步数【优先队列+广搜】
- Android开发笔记—— layout_weight
- 推荐算法:协同过滤算法的介绍
- 最简单的基于Flash的流媒体示例:网页播放器(HTTP,RTMP,HLS)
- Android实战简易教程-第十九枪(SwipeRefreshLayout下拉刷新使用实例)
- ASP:当 request.cookies 发生 Microsoft VBScript 运行时错误 (0x800A000D) 类型不匹配: '[string:
- axis2集成到已有项目操作实例(含源代码)
- UIViewContentMode各类型效果
- mybatis+springmvc缓存设置
- period task
- 黑马程序员-----css层叠样式表
- Linus进程间通信(一)管道、命名管道的原理及实现
- xquery
- 【插入排序】直接,折半,二路,希尔
- Jquery 获得单选按钮组中选中的值
- 收藏:解决其它程序与IIS共享80端口的四个方法
- 欢迎使用CSDN-markdown编辑器
- 黑马程序员----Java基础之集合类(一)
- conjugate gradient method (共轭梯度法)
- GCD 只执行一次