OC学习笔记之多态
来源:互联网 发布:淘宝直通车建议出价 编辑:程序博客网 时间:2024/05/17 06:46
什么是多态
考虑一个问题:父类能否访问子类的方法
多态就是某一类事物的多种形态。在程序中的多态:不同对象以自己的方式,响应相同名称方法的能力
称为多态(不同的对象以自己的方式相应父类同名的方法,这就是多天)
多态的条件
1.有继承关系
2.有方法重写//子类把父类的同名方法重写
//代码体现:用父类的类型的指针指向子类对象,这就是多态
Dog *g = [Dog new];
Animal *a = [Dog new];//多态
多态的优点
简化编程接口。他允许在类和类之间重用一些习惯性的命名。而不用为每一个新家的函数明明一个新的名字。
这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类区别开来。多态也使得代码可以分散在不
同的对象中而不用试图在一个函数中考虑到所有可能的对象。这样使得您的代码扩展性和复用性更好一些。
当一个新的情景出现的是后,您无需对现有的代码进行改动,而只需要增加一个新的类和新的同名方法。
1.子类继承父类
2.子类重写父类的方法
3.父类指针指向子类对象
Dog *g = [Dog new];
Animal *a = [Dog new];//多态
[a run];
run方法被Dog重写过,所以运行的Dog中的run.
多态的原理
程序直到运行的时候,才知道执行时才确定对象所有的类型。
动态类型的绑定使程序直到执行时才确定要对对象调用的实际的方法
OC不同于传统的程序设计语言, 他可以运行时加入新的数据类型和新的程序模块:动态类型
识别,动态绑定,动态加载
id类型:通用指针类型,弱类型,编译时不进行检查。
多态的注意点
1.父类可以调用子类的方法,并且该方法不存在于父类
Animal *a = [Dog new];
[a eat];//这样写的话,无法执行,因为Animal的.m文件中并没有eat方法
Animal *a = [Dog new];
[(Dog *)a eat];//这样就OK了,进行了一次强制转换
Animal a = [Animal new];
[(Dog *)a8 eat];//这样强制转换不可行,程序编译时没有错误,但是运行的时候,会报错
考虑一个问题:父类能否访问子类的方法
多态就是某一类事物的多种形态。在程序中的多态:不同对象以自己的方式,响应相同名称方法的能力
称为多态(不同的对象以自己的方式相应父类同名的方法,这就是多天)
多态的条件
1.有继承关系
2.有方法重写//子类把父类的同名方法重写
//代码体现:用父类的类型的指针指向子类对象,这就是多态
Dog *g = [Dog new];
Animal *a = [Dog new];//多态
多态的优点
简化编程接口。他允许在类和类之间重用一些习惯性的命名。而不用为每一个新家的函数明明一个新的名字。
这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类区别开来。多态也使得代码可以分散在不
同的对象中而不用试图在一个函数中考虑到所有可能的对象。这样使得您的代码扩展性和复用性更好一些。
当一个新的情景出现的是后,您无需对现有的代码进行改动,而只需要增加一个新的类和新的同名方法。
1.子类继承父类
2.子类重写父类的方法
3.父类指针指向子类对象
Dog *g = [Dog new];
Animal *a = [Dog new];//多态
[a run];
run方法被Dog重写过,所以运行的Dog中的run.
多态的原理
程序直到运行的时候,才知道执行时才确定对象所有的类型。
动态类型的绑定使程序直到执行时才确定要对对象调用的实际的方法
OC不同于传统的程序设计语言, 他可以运行时加入新的数据类型和新的程序模块:动态类型
识别,动态绑定,动态加载
id类型:通用指针类型,弱类型,编译时不进行检查。
多态的注意点
1.父类可以调用子类的方法,并且该方法不存在于父类
Animal *a = [Dog new];
[a eat];//这样写的话,无法执行,因为Animal的.m文件中并没有eat方法
Animal *a = [Dog new];
[(Dog *)a eat];//这样就OK了,进行了一次强制转换
Animal a = [Animal new];
[(Dog *)a8 eat];//这样强制转换不可行,程序编译时没有错误,但是运行的时候,会报错
0 0
- OC学习笔记之多态
- OC学习笔记之多态
- oc学习之多态
- 学习笔记之多态
- OC学习之多态初解
- Java学习笔记之多态
- Java学习笔记之多态。
- Java学习笔记之多态
- Java学习笔记之多态
- Java学习笔记之多态
- Java学习笔记之多态
- OC之多态
- OC之多态
- OC语法之多态
- 黑马程序员-OC学习日记五之多态
- OC面向对象之多态
- 面向对象OC之多态
- 学习笔记之多态与虚函数
- java 获取工程部署的路径
- Same Tree
- Android官方技术文档翻译——Gradle 插件用户指南(7)
- java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException
- SVN版本控制工具的使用详解
- OC学习笔记之多态
- windows下C的信号量使用
- 知识储备:DDMS介绍
- 不想做攻城狮的程序猿不是好同学
- 持久化API(JPA)系列(七)实体关系映射(ORM)之单表映射@IdClass
- java中的反射 2.2——类:检查一个类的声明信息@译自Oracle官方文档
- response跳转乱码解决
- 关于数组与指针的一个面试题
- Android 如何在进入有scrollView的页面时滑动条置顶