论“继承与多态”的重要性

   面向对象语言三大特征:封装、继承、多态。

   封装:一个类留给外部接口总是小于内部实现的方法。

   继承:自雷可以继承父类的字段、属性、方法。

   多态:面对同一消息,不同类的对象做出不同的响应。

一、认识继承

(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、要想使用类别中添加的方法,需要导入类别的头文件(原类+类别名)。

 

转载于:https://www.cnblogs.com/Jackyxiang/p/4973350.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值