Object-C 面向对象的三大特征
2015-07-27 18:37
639 查看
Object-C 面向对象的三大特征
封装
定义 隐藏内部实现,稳定外部接口 1.属性封装了实例变量 2.方法封装了具体实现的代码 3.类封装了属性和方法 作用 1.属性封装了实例变量 2.方法封装了具体实现的代码 3.类封装了属性和方法
继承
为什使用继承? 在开发过程中,我们会发现很多代码相同,特别是创建一些类的时候,发现类于类之间有很多相同属性及方法,这些方法和属性会写很多次,如果程序员这样干,就很蛋疼了。在面向对象中,有继承的概念。我可以使用继承方式将相同的属性和方法放到一个类中,然后其他类继承于此类,我们将这种方式叫做继承。 继承即是让一个类拥有另一个类的某些属性和方法的特性。被继承的类称为父类(基类),继承类称为子类。子类可以直接拥有父类中的所有非私有成员和方法 什么时候使用继承? 在开发中发现一些具有相同的特性和方法时,我们就使用继承。 在OC中只有单继承的概念,并没有多继承。
多态
多态是建立在继承的基础上面 1.继承同一父类的子类,他们本身具有自己的特性 2.继承同一父类的子类,在执行同样的命令的时候,具有不同的效果
新建一个Role类,再新建两个类Hero,Monster类来继承于Role类
Role.h文件
#import <Foundation/Foundation.h> @interface Role : NSObject -(void)attack:(Role *)role ; @end
Role.m文件
#import "Role.h" @implementation Role -(void)attack:(Role *)role { NSLog(@"正在攻击"); //里氏替换原则 if ([role isMemberOfClass:[Monster class]]) { //强转一下类型 Monster *m = (Monster *)role ; } if ([role isMemberOfClass:[Hero class]]) { Hero *h = (Hero *) role ; } } @end
Hero.m文件
#import "Hero.h" #import "Monster.h" @implementation Hero -(void)attack:(Role *)role { [super attack:role]; NSLog(@"hero attack"); } @end
Monster.m文件
#import "Monster.h" #import "Hero.h" @implementation Monster -(void)attack:(Role *)role { [super attack:role]; NSLog(@"monster attack"); } @end
相关文章推荐
- Android中Intent传递Object和ArrayList<Object>对象---笔记
- Json date from object error
- Sybase ASE:Can't allocate space for object in database 'tempdb' because 'default' segment is full
- SuperMap iObjects .NET 制作2.5D数据详解(一)
- objective-C中category与extension的探究——关于extension(类扩展)的实验和总结
- Object-C文件的读写
- Objective-C中@property的所有属性详解
- OC学习
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第八章 Foudation Kit 介绍
- ubuntu安装jdk之后,报错java/lang/NoClassDefFoundError: java/lang/Object的解决办法
- 摇身一变,从C++程序员变成Objective-C程序员:快速实用指南
- Object-C 便利构造器
- Iterator迭代器、Comparable、Comparator比较器
- Entity Framework 出现 "此 ObjectContext 实例已释放,不可再用于需要连接的操作" 的错误 原因
- [置顶]Swift 与 Object-C 交互 (Swift版本为:1.2)
- ios开发-Object-C可变参数函数
- iOS开发-Object-C Block的实现方式
- iOS开发-Object-C获取手机设备信息(UIDevice)
- iOS开发-Object-C学习之结构体使用
- Object c中的alloc和init问题