`
ma
  • 浏览: 1997 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

ThinkingInJava笔记-多形性(第七章)

阅读更多

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)。

分享到:
评论

相关推荐

    ThinkingInJava-3rd-code.rar

    这本书的第三版(3rd edition)配套代码库"ThinkingInJava-3rd-edition-code"为读者提供了丰富的实践示例,帮助理解书中的理论知识。 1. **面向对象编程基础**:Java是一种面向对象的语言,它支持类、对象、继承、...

    ThinkingInJava-cn-2.pdf

    Thinking In Java 我的兄弟Todd目前正在进行从硬件到编程领域的工作转变。我曾提醒他下一次大革命的重点将是遗传工程。 我们的微生物技术将能制造食品、燃油和塑料;它们都是清洁的,不会造成污染,而且能使人类...

    thinkinginjava源码-TIJ4-CP2:添加ThinkinginJava第二章原书自带的源代码

    本资源包含了该书第二章的源代码,这部分主要关注基础的面向对象编程概念。下面将详细解读这些源码及其相关的Java知识点。 1. **类与对象**:Java是一种面向对象的语言,它的基本单元就是类。在第二章中,你会看到...

    thinkinginjava笔记.pdf

    7. **数组**: - 定义数组时,可以使用`数组元素类型[] 数组名`或`数组元素类型 数组名[]`。创建数组空间使用`数组名 = new 数组元素类型[数组元素个数]`。 - 数组元素可以是对象引用,未初始化的引用数组默认为`...

    Thinkinginjava-4thedition-sourcecode

    这个是thinking in java第四版的源程序

    java笔试题算法-Thinking-in-Java:《ThinkingInjava》-Note《Java编程思想》笔记作者:[美]Bruce

    第一章:对象导论 访问修饰符 继承 伴随多态的可互换对象 单继承结构 容器 参数化类型 对象的创建和生命周期 异常处理:处理错误 第二章:一切都是对象 用引用操纵对象 必须由你创建所有对象 存储到什么地方 特例:...

    thinkinginjava笔记[参照].pdf

    《Thinking in Java》是一本深度解析Java编程语言的权威书籍,笔记主要涵盖了Java的核心概念和技术。以下是基于笔记内容的关键知识点: 1. **类与对象**: - 类是对象的蓝图,它定义了一组相似对象的属性(数据...

    ThinkingInJava

    ThinkingInJava

    ThinkinginJava

    ThinkinginJava cn.chm

    java学习笔记(ThinkinginJava).pdf

    java学习笔记(ThinkinginJava).pdf

    thinkinginjava

    讲解java的图书

    java学习笔记(ThinkinginJava)汇编.pdf

    java学习笔记(ThinkinginJava)汇编.pdf

    ThinkingInJava第二章习题答案

    第二章主要探讨了对象和类的概念,这是面向对象编程的基础。在这一章中,习题设计的目标是帮助读者巩固对对象、类、封装、继承以及多态等核心概念的理解。 一、对象与类的基本概念 对象是程序中的实体,它具有状态...

Global site tag (gtag.js) - Google Analytics