< 示例1>

题目1

答案

 

<练习>

题目

答案与分析


示例2>

哪里会出错

 

答案


<示例3>

题目

 

答案


分析

多态:

Java 中的函数,除了声明外 final 的外,都是后期绑定。

所谓绑定是建立“函数调用”和“函数本体”的关联。、

所谓的后期绑定是指执行时根据对象类别而进行

 

多态仅仅对函数而言,不对变量而言

变量的访问依赖于编译期引用指向的类型

方法的访问依赖于执行期对象的类型

 

向上转型后,调用某个函数,若 derived class overriding 了该函数,则会调用该 derived class 中的函数,否则会调用 base class 中的函数

 

向上转型后,只能调用 base class 中被 derived class overriding 的函数,不能调用 derived class extend 函数。

向上转型后,只能调用 base class 中的方法,不能调用 derived class 中的扩展方法 

补记:
编译器自始自终对引用到底指向哪个型别无能无力,其认为指向声明的型别,这个是编译期。
而java中除了final修饰的方法外,所有函数都是由“method-cal“的late binding机制,在执行期判知对象的型别,并调用相关的函数,这是执行期。

这个又如何解释呢

答案
分析


--------取于 崔毅 之《java编程指南》《java编程思想》学习笔记l