1.多形性问题也叫做动态绑定,推迟绑定或者运行期绑定。
JAVA中所有的方法都采用后期绑定技术,除非一个方法已被声明为final类型(声明为final会告诉编译器不需要动态绑定,这样会生成更高效的代码)。
上溯造型可以用下面这个语句表现出来:
Shape s = new Circle();
在这里我们创建了一个Circle对象,并将结果句柄立即赋给Shape(应为继承关系,Circle是Shape的一种)。
当我们调用其中的一个方法:
s.draw();
大家或许会认为调用了Shape的draw方法,因为毕竟是一个Shape句柄。但此时调用的是Circle的draw方法,因为后期绑定已经介入。
有了java的动态绑定,才有其实现的工厂方法模式。对于这一点内容需要认真分析,我们平时看来理所当然的东西,其实是一动态绑定为基础的。
2.构建起调用顺序
java对象在调用构造方法:
1)调用基类,即父类的构造方法。这个步骤会不断重复下去,例如一个类Test2继承自Test1,Test1继承自Object,那么当Test2的构造方法执行时,会向上调用Test1的构造方法,Test1的构造方法继续向上调用Object的构造方法。
2)按声明顺序调用成员初始化模块
3)调用衍生构造器主题
3.类型检查
在java中所有造型都会自动得到检查,所以即使只是进行一次括弧造型,进入运行期后,仍回进行检查,以保证其是我们希望的造型。如果不是,就会得到一个ClassCastException(类造型违例)。在运行期对类型进行检查的行为叫做“运行期类型标识”(RTTI)。
分享到:
相关推荐
这本书的第三版(3rd edition)配套代码库"ThinkingInJava-3rd-edition-code"为读者提供了丰富的实践示例,帮助理解书中的理论知识。 1. **面向对象编程基础**:Java是一种面向对象的语言,它支持类、对象、继承、...
Thinking In Java 我的兄弟Todd目前正在进行从硬件到编程领域的工作转变。我曾提醒他下一次大革命的重点将是遗传工程。 我们的微生物技术将能制造食品、燃油和塑料;它们都是清洁的,不会造成污染,而且能使人类...
本资源包含了该书第二章的源代码,这部分主要关注基础的面向对象编程概念。下面将详细解读这些源码及其相关的Java知识点。 1. **类与对象**:Java是一种面向对象的语言,它的基本单元就是类。在第二章中,你会看到...
7. **数组**: - 定义数组时,可以使用`数组元素类型[] 数组名`或`数组元素类型 数组名[]`。创建数组空间使用`数组名 = new 数组元素类型[数组元素个数]`。 - 数组元素可以是对象引用,未初始化的引用数组默认为`...
这个是thinking in java第四版的源程序
第一章:对象导论 访问修饰符 继承 伴随多态的可互换对象 单继承结构 容器 参数化类型 对象的创建和生命周期 异常处理:处理错误 第二章:一切都是对象 用引用操纵对象 必须由你创建所有对象 存储到什么地方 特例:...
《Thinking in Java》是一本深度解析Java编程语言的权威书籍,笔记主要涵盖了Java的核心概念和技术。以下是基于笔记内容的关键知识点: 1. **类与对象**: - 类是对象的蓝图,它定义了一组相似对象的属性(数据...
ThinkingInJava
ThinkinginJava cn.chm
java学习笔记(ThinkinginJava).pdf
讲解java的图书
java学习笔记(ThinkinginJava)汇编.pdf
第二章主要探讨了对象和类的概念,这是面向对象编程的基础。在这一章中,习题设计的目标是帮助读者巩固对对象、类、封装、继承以及多态等核心概念的理解。 一、对象与类的基本概念 对象是程序中的实体,它具有状态...