JAVA001对象导论07
2016-09-05 15:49
211 查看
伴随多态的可互换对象
泛化(generic)
添加新类型是扩展一个面向对象程序以便处理新情况的最常用方式。
通过导出新的子类型而轻松扩展设计的能力是对该公进行封装的基本方式之一。(极大地改善设计、降低软件维护的代价)
非面向对象编程的编译器产生的函数调用会引起前期绑定,意味着编译器将产生对一个具体函数名字的调用,而运行时将这个调用解析到将要被执行的代码的绝对地址。
在OOP中,程序直到运行时才能够确定代码的地址,所以当消息发送到一个泛化对象时,必须采用其他的机制。后期绑定,当向对象发送消息时,被调用的代码直到运行时才能确定。编译器确保被调用方法的存在,并对调用参数和返回值执行类型检查(无法提供此类保证的语言被称为是弱类型的),但是并不知道将被执行的确切代码。
为了执行后期绑定,JAVA使用一小段特殊的代码来替代绝对地址调用。这段代码使用在对象中存储的信息来计算方法体的地址。根据这一小段代码的内容,每一个对象都可以具有不同的行为表现。当向一个对象发送消息时,该对象就能够知道对这条消息应该做些什么。
在JAVA中,动态绑定是默认行为,不需要添加额外的关键字来实现多态。
把将导出类看做是它的基类的过程称为向上转型(upcasting)。
当向一个对象发送消息时,即使涉及向上转型,该对象也知道要执行什么样的正确行为。
泛化(generic)
添加新类型是扩展一个面向对象程序以便处理新情况的最常用方式。
通过导出新的子类型而轻松扩展设计的能力是对该公进行封装的基本方式之一。(极大地改善设计、降低软件维护的代价)
非面向对象编程的编译器产生的函数调用会引起前期绑定,意味着编译器将产生对一个具体函数名字的调用,而运行时将这个调用解析到将要被执行的代码的绝对地址。
在OOP中,程序直到运行时才能够确定代码的地址,所以当消息发送到一个泛化对象时,必须采用其他的机制。后期绑定,当向对象发送消息时,被调用的代码直到运行时才能确定。编译器确保被调用方法的存在,并对调用参数和返回值执行类型检查(无法提供此类保证的语言被称为是弱类型的),但是并不知道将被执行的确切代码。
为了执行后期绑定,JAVA使用一小段特殊的代码来替代绝对地址调用。这段代码使用在对象中存储的信息来计算方法体的地址。根据这一小段代码的内容,每一个对象都可以具有不同的行为表现。当向一个对象发送消息时,该对象就能够知道对这条消息应该做些什么。
在JAVA中,动态绑定是默认行为,不需要添加额外的关键字来实现多态。
把将导出类看做是它的基类的过程称为向上转型(upcasting)。
当向一个对象发送消息时,即使涉及向上转型,该对象也知道要执行什么样的正确行为。
相关文章推荐
- JAVA001对象导论06
- JAVA001对象导论12
- JAVA001对象导论08
- JAVA001对象导论10
- JAVA001对象导论04
- JAVA001对象导论11
- JAVA001对象导论09
- JAVA001对象导论03
- JAVA001对象导论05
- Java编程思想-对象导论
- 【Java编程思想】一、对象导论
- JAVA编程思想-第一章 对象导论
- thinking in java 笔记 思维导图 第一章对象导论
- java那些事之对象导论
- Java编程思想——ch01 对象导论
- Thinking in JAVA笔记——第一章 对象导论
- 【Thinking in java】对象导论
- 2014.05.25 Java 对象导论
- think in java 第四版读书笔记 第一章对象导论
- 黑马程序员--03.Java面向对象--07.【多态】【instanceof操作符】