OC三大特性之继承和多态
来源:互联网 发布:比尔 拉塞尔 知乎 编辑:程序博客网 时间:2024/05/23 00:07
一、继承
1.概念:程序里的继承子类继承了父类,那么子类就拥有父类中的所有成员变量和方法,这跟现实中的狗是动物的一种,狗也具备了动物 所必备的属性,更符合我们的理解。
2.继承的好处与缺点:
1>抽取出了重复的代码
2>建立了类和类之间的联系
继承的缺点:耦合性太强
3.继承的实例
@interface Animal:NSObject// 动物里继承了NSObject,获得NSObject类的方法;{ int _age; int _weight;} // setter和getter ......@end@interface Dog :Animal// dog类继承Animal类,并获得了父类的所有方法和属性@end原理图
注意:OC语言是单继承语言。在oc语言中,基本上所有类的根类都是NSObject类。
二、继承与组合
继承的适用场合:
1>当两个类拥有相同的属性和方法时,就可以将相同的属性和方法抽取到一个父类中。
2>当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类(考虑),在这种情况下,也可以考虑使用组合。
继承:xx是xxx,如狗是动物,可以让狗继承动物类
组合:XXX拥有xxx,如学生有书,可以让书这个类作为学生类的属性
三、重写和super
1.重写概念:子类重新实现父类中的某个方法(对某个方法重新实现),覆盖父类某个方法以前的做法。
2.使用场合:
3. super用法:子类调用父类中的某个方法1>当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中
2>当A类有用B类中的部分属性和方法时,可以考虑让B类继承A类。
super处于对象方法中时,那么就会调用父类的对象方法使用场合:子类重写父类的方法时想要保留父类的一些行为
super处于类方法中时,那么就会调用父类的类方法
(子类可以直接调用父类中的某个方法 [super 方法名])
4. super重写方法
- (void)walk // 重写父类的walk方法{ NSLog("跳两下"); [super walk]; // 调用父类的walk方法}
四、多态
1.基本概念
多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态。
在使用多态是,会进行动态检测,以调用真实的对象方法。
多态在代码中的体现即父类指针指向子类对象。
2.代码体现
Animal *a=[dog new];//Animal是父类,dog是子类 , 狗是动物
错误写法:Dog *d=[Animal new]; // 动物不一定是狗,也可能是猫
3.优缺点
优点:节省了代码,提高了效率。
如果方法或函数参数中使用的是父类类型,则可以使用父类指针传入父类和子类对象。
void feed(Animal *a) // 定义喂动物的函数。
{
[a eat];
}
解析:上述函数的形参是父类Animal,所以此函数可以传入父类和子类。
局限性:
父类类型的指针不能调用子类的方法。(必须将父类指针强制转化为子类指针时才能调用子类中方法)
Animal *a=[dog new];
Dog *d = (dog *) a; // 将父指针a强制转化为子类指针d
- OC三大特性之继承和多态
- OC语言-三大特性之封装继承多态
- 黑马程序员-OC之面向对象的三大特性:封装、继承和多态
- OC的三大特性之继承
- 黑马程序员_iOS开发之OC之面向对象之三大特性封装、继承和多态
- java三大特性之继承和多态
- OC三大特性(封装继承和多态)以及分类和扩展
- OC中类的三大特性:封装、继承和多态
- OC类的三大特性:继承,封装和多态
- OC基础—三大特性之继承
- 黑马程序员————OC面向对象_三大特性之继承与多态
- OC-5-三大特性:继承
- Java三大特性之封装继承多态
- OC语言——三大特性-继承与多态
- 黑马程序员——三大特性之继承和多态
- OC三大特性之封装
- OC语言之三大特性
- OC三大特性之封装
- 剑指offer系列源码-二叉树的深度
- qt如何修改文本编辑器字体及颜色
- java动态代理
- 从创新看产品的内涵和外延
- TouchSlide - 大话主席
- OC三大特性之继承和多态
- LVS+KEEPALIVED+MYSQL单点写入读负载均衡主主同步高可用方案
- 《Effective C++》学习笔记——条款19
- nginx设置静态文件
- Fragment的生命周期
- 2014.12.10
- 根据ID读取配置中的消息显示
- 安装运行虚拟机的时候报 :VT-x/AMD-V 硬件加速器已被启动,但当前处于无效状态
- Android 数据存储之SQLite