简单的封装继承多态
2016-03-01 11:31
357 查看
首先创建一个工程, 然后创建一个动物类(Animal),然后再创建一个猫类和一个狗类,最后创建一个人类来给动物喂食。
动物类继承NSObject
而猫类和狗类继承动物类
人类喂食也继承NSObject
动物类
猫类
人类喂食
最后在主函数里面实例化对象
最后得到下面的。
![](http://images2015.cnblogs.com/blog/868060/201603/868060-20160301113007392-1072590165.png)
当然这基本是最简单了。
动物类继承NSObject
而猫类和狗类继承动物类
人类喂食也继承NSObject
动物类
//类的声明 #import <Cocoa/Cocoa.h> @interface Animal : NSObject -(void)jiao; -(void)eat; @end //类的实现 #import "Animal.h" @implementation Animal -(void)jiao { NSLog(@"叫"); } -(void)eat { NSLog(@"吃"); } @end
猫类
#import "Animal.h" @interface Cat : Animal -(void)jiao; @end #import "Cat.h" @implementation Cat -(void)jiao { NSLog(@"喵喵叫"); } -(void)eat { NSLog(@"猫吃鱼"); } @end
人类喂食
#import <Foundation/Foundation.h> #import "Animal.h" @interface Weishi : NSObject -(void)feed:(Animal *) animal; @end #import "Weishi.h" @implementation Weishi -(void)feed:(Animal *)animal { [animal eat]; } @end
最后在主函数里面实例化对象
#import <Foundation/Foundation.h> #import "Animal.h" #import "Cat.h" #import "Dog.h" #import "Weishi.h" int main(int argc, const char * argv[]) { @autoreleasepool { id test=[[Animal alloc]init]; [test jiao]; Animal *test1=[[Cat alloc]init]; [test1 jiao]; id test2=[[Dog alloc]init]; [test2 eat]; id test3=[[Weishi alloc]init]; [test3 feed:test2]; } return 0; }
最后得到下面的。
![](http://images2015.cnblogs.com/blog/868060/201603/868060-20160301113007392-1072590165.png)
当然这基本是最简单了。
相关文章推荐
- Adobe Dreamweaver CC 2014 代码颜色目录
- 兼容ie6及以上的阴影滤镜的写法
- 字符串对象(NSString)常用方法
- PHP学习(一):对PHP的理解
- 理解文章《Notes on Convolutinal Neural Networks》
- elasticsearch2.2-yarn(hadoop)安装
- Android中数据持久化的三种方式
- OpenGL ES着色器语言之着色概览(官方文档第二章)
- iOS 第三方库冲突的处理
- JAVA学习之GUI组件中Toolkit的使用
- maven3常用命令、java项目搭建、web项目搭建详细图解
- 为啥NSString的属性要用copy而不用retain
- over-float清除浮动
- iOS扫一扫功能开发
- android draw过程分析
- Material Design之Toolbar的使用以及修改菜单和字体颜色
- linux下mysql的root密码忘记解决方
- Cannot forward after response has been committed
- 了解学习JS中this的指向
- 收藏的文章