黑马程序员-OC语言-动态类型和静态类型(听课笔记)
来源:互联网 发布:放大图片的软件 编辑:程序博客网 时间:2024/05/21 18:44
------Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
1 、动态类型& & 静态类型
多态:允许不同的类定义相同的方法。动态类型:程序直到执行时才能确定所属的类。 Animal *ani = [Dog new];
静态类型:将一个变量定义为特定类的对象时,使用的是静态形态。Animal *ani = [Animal new];将一个变量定义为特定类的对象时,使用的是静态类型,在编译的时候就知道这个变量所属的类,这个变量总是存储特定类的对象。使用静态类型时,编译器尽可能的确保变量的用法在程序中始终保持一致,编译器能够通过检查来确定应用于对象的方法是由该类定义的或者由该类继承的,否则就会显示警告。静态类型能够更好的在程序编译阶段就指出错误。并且使用静态类型可以提高程序的可读性。
2 、为什么要有动态类型?
多态的出现时为了让不同的类能使用同名的方法。这会让程序的可读性大大提高,也降低了编程难度。
编译时和运行时检查
因为存储在id变量中的对象类型在编译的时候是无法确定的,所以一些事情是需要在运行时才能够确定。
例如:类Dog只有一个run方法,而类Cat只有一个jump方法,那么下面这段代码在编译的时候就是会出错
Dog *dog = [[Dog alloc] init];
[dog jump];
因为编译器知道dog是Dog类的一个对象,而当遇到[dog jump]消息的时候,编译器同样知道Dog类是没有jump方法的,所以在编译阶段就会提出警告。但是如果将代码换成下面的样子在编译阶段就不会出错
Animal *cat= [[Animal alloc] init];
[(Cat*)cat jump];
因为在编译阶段编译器并不知道cat中存储的对象的类型是什么,所以在运行的时候程序就会crash
0 0
- 黑马程序员-OC语言-动态类型和静态类型(听课笔记)
- 黑马程序员-OC语言-SEL类型(听课笔记)
- 黑马程序员-OC语言-self和super关键字(听课笔记)
- 黑马程序员-OC语言-类方法(听课笔记)
- 黑马程序员-OC语言-封装的实现步骤(听课笔记)
- 黑马程序员-OC语言-依赖关系(听课笔记)
- 黑马程序员-OC语言-关联关系(听课笔记)
- 黑马程序员-OC语言-方法重载问题(听课笔记)
- 黑马程序员-OC语言-多态的实现(听课笔记)
- 黑马程序员-OC语言-类的本质(听课笔记)
- 黑马程序员-OC语言-@property增强使用(听课笔记)
- 黑马程序员-OC语言-Foundation框架(听课笔记)
- 黑马程序员-OC语言-类的声明和实现(听课笔记)
- 黑马程序员-OC语言-函数和对象方法的区别(听课笔记)
- 黑马程序员-OC语言-对象和方法之间的关系(听课笔记)
- 黑马程序员-OC语言-self修饰变量以及使用总结和注意事项(听课笔记)
- 黑马程序员-OC语言-点语法介绍和使用(听课笔记)
- 黑马程序员-OC语言-@synthesize关键字介绍和使用(听课笔记)
- Oracle学习笔记[2]----Oracle监听与sqlplus命令
- 鸟哥的Linux私房菜-----7、硬件管理
- 常用排序算法之简单选择排序
- Objective-C语法之KVC的使用
- JSP基础实例_登录页面的制作_学习笔记
- 黑马程序员-OC语言-动态类型和静态类型(听课笔记)
- JAVA中sleep() 和 wait() 有什么区别?
- 深入浅出单实例Singleton设计模式
- Html标签属性之 字体
- 黑马程序员------Java的多态性
- LeetCode139:Word Break
- Servlet 工作原理解析
- Linux-命令-tail
- PHPCMS V9模板设计常用变量