摘要:1. 动态分派 一个体现是重写(override)。下面的代码,运行结果很明显。 最终输出sub : f(); 那么虚拟机是怎么做到动态分派的呢? 不同的虚拟机有不同的实现,最常用的是使用虚方法表(Virtual Method Table) 2. 虚方法表 对于Super和Sub类,虚方法表大致如下 阅读全文
posted @ 2017-04-30 18:06 kingsleylam 阅读(1045) 评论(0) 推荐(1) 编辑
摘要:分派(Dispatch)可能是静态也可能是动态的,根据分派依据的宗量数可分为单分派和多分派。这两种分派方式的两两组合就构成了静态单分派,静态多分派,动态单分派,动态多分派这4种组合。本章讲静态分派。 1.静态分派 所有依赖静态类型来定位方法执行版本的分派动作称为静态分派。静态分派的典型应用是方法重载 阅读全文
posted @ 2017-04-30 11:36 kingsleylam 阅读(308) 评论(0) 推荐(0) 编辑
摘要:方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还没有涉及到方法内部的具体运行过程。在程序运行时,进行方法调用是最普遍最频繁的操作,但Class文件的编译过程不包含传统编译中的连接步骤,一切方法调用在Class文件里存储的都只是符号引用,而不是方法 阅读全文
posted @ 2017-04-30 10:31 kingsleylam 阅读(480) 评论(0) 推荐(0) 编辑