继承、多态
============================================
学习目标
1、继承
2、多态
需要理解的知识
面向对象的三个基本特征: 1、封装 2、继承 3、多态
============================================= 1、继承
1.1 生活中的继承
父类 子类
父亲 儿子
人类 学生
学生 中学生
(1)把继承又叫做派生
父类的属性(成员变量(不包括私有))和方法,子类可以直接获取,这个过程就叫做继承
子类在父类的基础上,创建了自己独有的成员变量和方法,这个过程就叫做派生。
继承和派生其实是说的继承概念的不同的侧重点。
(2)提示:每个类中都有一个super class指针,该指针指向自己的父类。
【注】 OC只支持单继承
继承的好处:
1)创建大量的相似类的时候,可以节省工作量。抽取出了重复的代码
2)使用框架中的类,或已经写好的类,继承该类,生成一个派生类,比原类更好用。
3)建立了类和类之间的联系
继承的缺点:
耦合性太强
1.2 代码中的继承
<1>继承的基本语法
(1)继承的写法
@interface 子类名:父类名
@end
(2)方法的继承
子类可以使用父类的所有方法
(3)字段的继承
子类可以访问父类非私有的成员变量
1.3 继承在内存中的体现
子类继承父类之后。 子类对象的构成:
1) 父类所有的字段和方法
2) 子类自己独有的字段和方法
【继承的作用】
1、快速创建多个形似的类
2、对类进行扩展
3、自定义一些系统的一些功能控件(UI里面用的比较多)
1.4 关键字super
很多时候,子类的方法只需要在父类的同名方法中增补些内容。可以通过关键字【supper】调用父类的方法,再增添子类独有的内容。
作用:
(1)直接调用父类中的某一个方法
(2)Super处在对象方法中,那么就会调用父类的对象方法;super处于类方法中,那么就会调用父类的类方法。
使用场景:子类在重写父类方法时,想要保留父类的一些行为。
1.5 继承和组合
继承的适用场合:
(1)当两个类拥有相同的属性和方法时,就可以将相同的属性和方法抽取到一个父类中。
(2)当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类,在这种情况下,也可以考虑使用组合。
继承:###是xxx,如狗是动物,可以让狗继承动物类
组合:###拥有xxx,如学生有书,可以让书这个类作为学生类的属性
原文:http://www.cnblogs.com/yuhanchen/p/5243391.html