标签:
面向对象语言三大特征:封装、继承、多态。
封装:一个类留给外部接口总是小于内部实现的方法。
继承:自雷可以继承父类的字段、属性、方法。
多态:面对同一消息,不同类的对象做出不同的响应。
一、认识继承
(1)生活角度
父类:动物 英雄 人
子类:狗 抗日英雄 中国人
父类 超类 基类
子类 子类 派生类
【继承】也称派生。继承指的是子类继承父类的字段、属性、方法。派生是指子类在父类基础上可以添加自己特有的字段、属性、方法。【继承】与【派生】是对同一种行为,不同侧重点的描述。
【注】
(a)子类可以从父类继承到父类所有的字段、属性、方法。父类在interface中声明字段、属性、方法,子类全部可以使用。父类在impletation中声明的字段、属性、方法,子类同样可以继承,但是无法使用。
(b)子类可以在父类的基础上添加自己特有的字段、属性、方法。
【注】
1.oc中 所有的方法都是虚函数,都可以被子类重写
2.重写之后,子类对象调用的是子类中重写之后的方法。
3.很多时候,我们并不需要将父类某些方法完全重写,而在父类基础开枝散叶。这个时候我们借用super关键字去调用的方法。
self与super
【问】为什么我们不可以将对象开辟在栈中,只能创建在堆上?
因为oc是动态机制,所谓的动态机制,是指在程序编程阶段是无法确定一个类的父类的,自然就不可以确定他的大小,没办法确定大小就没有办法再栈开辟空间,所以只能在运行阶段,动态的去对上为对象开辟空间。
二、继承的作用
1.创建大量相似的类(oc中几乎不用)
【例】在游戏开发中,我们会创建一个怪物,僵尸,幽灵,怪物的行为:游荡、攻击、被攻击、死亡。
2、继承一个官方 的类或者继承一个第三方的类。
【注】NSString\NSArray\NSDictionsry 不可以被继承。
3、使用继承去实现多态。
【多态】是不同对象面对同一个消息做出不同的反应。
一、认识多态
(1)从生活角度
面对上课铃响,上体育课和文化课的学生面对‘铃响‘做出不同的举动。
(2)从代码角度
父类指针指向子类对象,通过父类指针调用方法时,父类指针指的对象不同,面对同一消息的响应结果不同。
【注】以上多态,主要是C++实现多台的手段,在OC阶段实现多态是通过协议。
【继承】+【重写】+【父类指针实现多态】
【类别】category
当我们在使用一个类的时候,我们经常会感叹:如果这个类再有一个什么方法多好啊,通常不方便直接修改该类。
【注】
1、在类别中只能添加成员方法。类方法,但是不可以添加成员变量、属性。
2、在类别中添加方法就如同添加到了原类中。
3、在类别定义成员方法也可以是原类的成员变量。
4、父类的类别添加的成员方法、类方法,子类也可以使用。
5、要想使用类别中添加的方法,需要导入类别的头文件(原类+类别名)。
标签:
原文地址:http://www.cnblogs.com/Jackyxiang/p/4973350.html