JAVA001对象导论07
来源:互联网 发布:python datatime 编辑:程序博客网 时间:2024/05/17 05:07
伴随多态的可互换对象
泛化(generic)
添加新类型是扩展一个面向对象程序以便处理新情况的最常用方式。
通过导出新的子类型而轻松扩展设计的能力是对该公进行封装的基本方式之一。(极大地改善设计、降低软件维护的代价)
非面向对象编程的编译器产生的函数调用会引起前期绑定,意味着编译器将产生对一个具体函数名字的调用,而运行时将这个调用解析到将要被执行的代码的绝对地址。
在OOP中,程序直到运行时才能够确定代码的地址,所以当消息发送到一个泛化对象时,必须采用其他的机制。后期绑定,当向对象发送消息时,被调用的代码直到运行时才能确定。编译器确保被调用方法的存在,并对调用参数和返回值执行类型检查(无法提供此类保证的语言被称为是弱类型的),但是并不知道将被执行的确切代码。
为了执行后期绑定,JAVA使用一小段特殊的代码来替代绝对地址调用。这段代码使用在对象中存储的信息来计算方法体的地址。根据这一小段代码的内容,每一个对象都可以具有不同的行为表现。当向一个对象发送消息时,该对象就能够知道对这条消息应该做些什么。
在JAVA中,动态绑定是默认行为,不需要添加额外的关键字来实现多态。
把将导出类看做是它的基类的过程称为向上转型(upcasting)。
当向一个对象发送消息时,即使涉及向上转型,该对象也知道要执行什么样的正确行为。
0 0
- JAVA001对象导论07
- JAVA001对象导论01
- JAVA001对象导论02
- JAVA001对象导论03
- JAVA001对象导论04
- JAVA001对象导论05
- JAVA001对象导论06
- JAVA001对象导论08
- JAVA001对象导论09
- JAVA001对象导论10
- JAVA001对象导论11
- JAVA001对象导论12
- 对象导论
- 对象导论
- 对象导论
- 对象导论
- 对象导论
- 对象导论
- Android NDK/JNI入门
- iOS FMDB 事务的理解
- 汉诺塔(Hanoi)递归算法笔记记录
- Qt QChart 中 QValueAxis 和 QCategoryAxis 区别
- 扩展欧几里得算法&同余方程&模m乘法逆元详解
- JAVA001对象导论07
- Introducing OctoberCMS系统——一个基于Laravel-based CMS
- SpringMVC学习4
- 获奖名单
- Python2.7遍历读取中文目录
- 大数据读hdfs文件笔记
- 11 ContextMenu 上下文菜单按钮
- 【LightOJ】1331 - Agent J(数论)
- 如何查看SQL2000数据库版本